Est JPA persistence.xml classpath situé?
Voici ce que je suis en train de faire. Je suis l'aide de persistance JPA dans une application web, mais j'ai un ensemble de tests unitaires que je veux courir à l'extérieur d'un conteneur.
J'ai mon premier persistence.xml
dans le META_INF
dossier de mon application principale et il fonctionne très bien dans le conteneur (Glassfish).
J'ai placé un deuxième persistence.xml
dans le META-INF
dossier de mon test-classes
répertoire. Il contient un distinct unité de persistance que je veux utiliser pour le test. Dans eclipse, j'ai placé ce dossier plus haut dans le classpath que le dossier par défaut et il semble fonctionner.
Maintenant quand je lance le maven build directement à partir de la ligne de commande et il tente d'exécuter les tests unitaires, la persistence.xml
remplacement est ignoré. Je peux voir le remplacer dans la META-INF
dossier de l'maven généré test-classes
répertoire et je m'attendais à la maven tests pour utiliser ce fichier, mais il ne l'est pas. Ma source de test de remplacement de configuration, d'un mode de travail.
Je suis confus à savoir si le persistence.xml
est situé dans le classpath. Si elle l'était, mon substituer devrait fonctionner comme le printemps remplacer depuis le maven plugin surefire explique "[La classe de test répertoire] sera inclus au début de l'essai classpath".
Ai-je tort de prévoir comment les persistence.xml
fichier se trouve?
J'ai pu (et ont) créer une deuxième unité de persistance dans la production persistence.xml
fichier, mais il se sent sale place de test de la configuration de ce fichier de production. D'autres idées sur la façon d'atteindre mon objectif est la bienvenue.
OriginalL'auteur Vinnie | 2010-04-14
Vous devez vous connecter pour publier un commentaire.
persistence.xml
est chargé à partir du classpath; dans le passé, j'ai fait exactement ce que vous avez décrit.Il s'agit probablement d'un problème avec maven. Vous pouvez déboguer le maven classpath en exécutant avec le
-X
option.OK - c'est aujourd'hui. Avant j'avais nommé chaque unité de persistance dans les différents fichiers avec le même nom. J'ai changé le test de l'unité de persistance d'avoir un nom différent. Il ne semble pas juste pour moi, mais peut-être que c'est une limitation que je ne connaissais pas.
Je suis allé et a déterré le code où je l'avais fait avant, et j'ai eu une autre unité de persistance définis pour les tests unitaires, bien que mon test persistence.xml fichier ont le même (non-test) unité de persistance également défini. Il n'était probablement pas nécessaire. Je pense que les tests unitaires utiliser le test de l'unité de persistance lors de la création de l'entité gestionnaire.
OriginalL'auteur Ken Liu
Il est difficile de savoir où vous avez placé le "deuxième"
persistence.xml
(la version de test), mais vous devez le placer danssrc/test/resources/META-INF
. Ressources de Test sont automatiquement ajouté au classpath mis en place par Maven pour vos tests unitaires et de prendre la priorité sur les ressources placées danssrc/main/resources
.OriginalL'auteur Pascal Thivent