J'ai un projet Maven multi-module. Pour cet exemple, considérons deux modules:
data
consumer
Le module consumer
a le module data
comme dépendance.
Le module data
déclare un tas de classes principales. Il y a des tests sous src/test
qui les utilisent. Ces tests nécessitent une création d'objets de longue haleine, j'ai donc une classe avec des méthodes utilitaires pour créer ces objets. Cette classe utilitaire ( SampleDataHelper
) est dans la src/test
hiérarchie.
J'ai également quelques tests dans le consumer
module qui doivent créer certains de ces objets longs. Je souhaite utiliser ma SampleDataHelper
classe (définie dans data src/test
) dans les tests qui résident dans mon consumer src/test
arbre. Malheureusement, même s'il data
s'agit d'une dépendance de consumer
, consumer
ne peut pas voir les classes qui existent sous data src/test
.
Pour lutter contre cela, j'ai pensé que je pourrais créer un autre module ( data-test
) et passer SampleDataHelper
à celui-ci sous src/main
. Ensuite, j'inclurais data-test
comme une dépendance de portée de test de data
. Malheureusement, cela introduit une dépendance circulaire: data
utilise data-test
, mais data-test
nécessite également data
.
La seule solution que je suis venu avec est à placer SampleDataHelper
sous le data src/main
cadre d' un test
paquet et d' espoir qu'aucun code d'application réelle que jamais il appelle.
Comment puis-je partager ma SampleDataHelper
classe entre les modules sans la mettre sous src/main
?
data
) avant même de pouvoir compiler mon deuxième module ( consumer
).
mvn package
, mais cela devrait fonctionner très bien en une seule étape lorsque vous utilisez mvn install
ou mvn deploy
. Juste un petit mot. Dans l'un de nos grands projets, nous avons un wrapper sur junit TestBase
et il se trouve dans src/main
lequel je ne considère pas non plus comme une bonne idée.