2010-08-05 3 views
0

Comment compiler un seul module dans le scénario suivant de deux projets Maven multi-modules A et B.Comment compiler un seul module dans un scénario de deux projets Maven multi-modules

Les deux projets sont situés dans le même répertoire de sorte que la structure du répertoire ressemble à ceci:

root 
|-- A 
| |-- A1 
| |-- A2 
| `-- A3 
`-- B 
    |-- B1 
    `-- B2 

Tous les répertoires à l'exception racine ont leurs propres fichiers pom.xml et chaque sous-module fait référence à son module parent (A1 a parent A, etc.) et la parent fait référence à ses sous-modules (A a les modules A1-A3). Le problème que j'ai est que A1 dépend également de B1, puisque le projet B est une collection d'utilitaires que je veux utiliser dans d'autres projets.

Ma question est comment je fais référence B1 correctement pour que je puisse construire A1 sans avoir à installer B1 premier. Je veux dire que je veux construire A1 avec toutes ses dépendances en utilisant une commande maven.

Ma solution actuelle est de faire de B1 un module de A (via la référence de module ../B/B1). Ensuite, je peux appeler mvn package à partir du répertoire A et cela fonctionne très bien. Mais la construction de l'ensemble du projet A prend parfois beaucoup de temps. Par conséquent je voudrais construire seulement des avers A1 +. Comment puis je faire ça? Quand j'appelle mvn reactor:make -Dmake.folders=A1 du répertoire A Je reçois l'erreur de compilation suivante:

Reason: Cannot find parent: B:B for project: B:B1:jar:1.0-SNAPSHOT for project B:B1:jar:1.0-SNAPSHOT 

Il semble donc que maven coup ne peut pas trouver le module parent B1 plus lors de l'utilisation du plug-in du réacteur. Quelqu'un connaît-il une solution pour cela ou une approche alternative pour référencer un sous-module d'un autre projet qui permet de construire le bâtiment A1 de la manière décrite ci-dessus? Notez, je ne veux pas mettre en place un super module en racine qui inclut les modules A et B, parce que ce fichier pom, parce que chaque utilisateur qui vérifie A et B pourrait avoir aussi d'autres projets dans son répertoire racine et donc devrait écrire son propre fichier pom pour root.

+0

Peut-être que cette [question] (http://stackoverflow.com/questions/1114026/maven-modules-building-a-single-specific-module) est utile. – Jan

Répondre

0

Simple créer un pom racine qui a des modules là-bas et faire référence au parent dans A et B alors cela fonctionnerait. Sinon, cela ne fonctionne pas.

+0

Eh bien, comme mentionné ci-dessus, c'est quelque chose que je veux éviter, car je ne suis pas autorisé à vérifier dans le fichier pom pour le répertoire racine dans notre svn. La raison en est que plusieurs personnes différentes travaillent sur des projets partiellement différents. Donc, pour chaque compagnon de travail, le répertoire racine serait différent et donc le fichier pom contiendrait différents modules. Cette solution serait donc sous-optimale puisque tout le monde devrait maintenir son propre fichier pom dans son répertoire racine. –

Questions connexes