Ist JPA persistence.xml classpath liegt?
Hier ist, was ich versuche zu tun. Ich bin mit JPA-Persistenz in einer web-Anwendung, aber ich habe eine Reihe von unit-tests, die ich laufen will, die außerhalb eines Containers.
Ich habe meine primäre persistence.xml
im META_INF
Ordner meiner Haupt-app und es funktioniert Super im container (Glassfish).
Legte ich eine zweite persistence.xml
im META-INF
Ordner von meinem test-classes
- Verzeichnis. Diese enthält eine eigene Persistenz-Einheit, die ich verwenden möchten, für die es nur testen. In eclipse, legte ich diesen Ordner höher in den classpath als der Standard-Ordner und es scheint zu funktionieren.
Nun wenn ich das maven-build-direkt von der Befehlszeile aus, und es versucht zum ausführen der unit-tests, die persistence.xml
override ignoriert. Ich kann sehen, dass das überschreiben in der META-INF
Ordner von maven generierte test-classes
Verzeichnis und ich erwartete, maven tests um diese Datei zu verwenden, ist es aber nicht. Meine Spring-test-Konfiguration überschreibt, erzielt in einer ähnlichen Weise arbeiten.
Bin ich verwirrt, ob die persistence.xml
befindet sich über den classpath. Wenn es so wäre, meine überschreiben sollte funktionieren wie die Feder überschreiben, da das maven-surefire-plugin erklärt "[Der test-Klasse-Verzeichnis] aufgenommen werden zu Beginn der test-classpath".
Habe ich falsch Vorhersagen, wie die persistence.xml
Datei liegt?
Ich konnte (und habe) erstellen Sie eine zweite Ausdauer-Einheit in der Produktion persistence.xml
- Datei, aber es fühlt sich schmutzig an Ort test-Konfiguration in dieser Produktion-Datei. Andere Ideen, wie Sie zu erreichen ist mein Ziel, ist willkommen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
persistence.xml
geladen wird aus dem Klassenpfad; in der Vergangenheit, ich habe genau das gemacht, was du beschrieben hast.Handelt es sich wahrscheinlich um ein Problem mit maven. Sie können die debug-maven classpath, indem Sie es mit der
-X
option.Unklar ist, wo Sie platziert die "zweite"
persistence.xml
(test-version), aber Sie sollten es insrc/test/resources/META-INF
. Test-Ressourcen werden automatisch Hinzugefügt, um den Klassenpfad einrichten von Maven für Ihre unit-tests und Vorrang vor den Ressourcen platziert insrc/main/resources
.