J’utilise maven pour construire un projet multi-module. Mon module 2 dépend du module 1 src à la scope de la compilation et des tests du module 1 dans la scope du test.
Module 2 –
blah MODULE1 blah tests test
Cela fonctionne bien. Disons que mon module 3 dépend de Module1 src et teste au moment de la compilation.
Module 3 –
blah MODULE1 blah tests comstack
Lorsque mvn clean install
, mon build se déroule jusqu’au module 3, échoue au module 3 car il ne peut pas résoudre la dépendance au test du module 1. Puis je fais une mvn install
sur le module 3 seul, reviens en arrière et lance mvn install
sur mon pom parent pour le faire construire. Comment puis-je réparer cela?
J’ai un doute sur ce que vous essayez de faire, mais je suppose que vous voulez réutiliser les tests que vous avez créés pour un projet (module1) dans un autre. Comme expliqué dans la note au bas du Guide d’utilisation des tests joints :
Notez que les éditions précédentes de ce guide suggéraient d’utiliser
au lieu de
tests . Bien que cela fonctionne actuellement dans certains cas, il ne fonctionne pas correctement lors de la construction du module JAR de test et de tout consommateur si une phase de cycle de vie antérieure à l’installation est appelée. Dans un tel scénario, Maven ne résoudra pas le JAR de test à partir de la sortie du réacteur, mais à partir du référentiel local / distant. Apparemment, le JAR des référentiels pourrait être obsolète ou complètement manquant, provoquant un échec de compilation (cf. MNG-2045 ).
test-jar
Donc, tout d’abord, pour emballer les tests compilés dans un JAR et les déployer pour une réutilisation générale, configurez le maven-jar-plugin
comme suit:
org.apache.maven.plugins maven-jar-plugin 2.2 test-jar
Ensuite, installez / déployez l’artefact JAR de test comme d’habitude (en utilisant mvn install
ou mvn deploy
).
Enfin, pour utiliser le JAR de test, vous devez spécifier une dépendance avec un type de test-jar
de test-jar
spécifié:
... com.myco.app foo 1.0-SNAPSHOT test-jar test ...
En ce qui concerne mon commentaire à la question de Pascals, je pense avoir trouvé une réponse acceptable:
maven-jar-plugin 2.2 test-jar test-comstack ${basedir}\target
La principale différence ici, comme vous le voyez ici, est la
.
Je vais créer le test-jar et il sera disponible dans la phase de compilation des tests et pas seulement après la phase du package.
Travaille pour moi.