Dépendance au test Maven dans un projet multi-module

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 tests au lieu de test-jar . 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 ).

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.