Modules Maven + Création d’un module spécifique unique

J’ai un projet multi-module Maven avec un projet parent P et trois sous-modules A , B et C B et C sont des projets de guerre et tous deux dépendent de A

Je peux taper mvn comstack en P et faire mvn comstack tous les sous-modules. Le problème vient quand je veux faire des opérations pour des modules spécifiques.

J’aimerais pouvoir empaqueter une guerre pour le projet B , mais quand je lance la commande package depuis le répertoire de B , on se plaint de ne pas pouvoir trouver les dépendances pour A

Je comprends de cette question: Maven et les modules dépendants , peut-être que Maven n’est pas vraiment conçu pour ce type de résolution de dépendance, mais cela pose la question de savoir comment emballer B ?

  1. Dois-je exécuter mvn package pour toute la hiérarchie du projet alors que je ne veux vraiment que B ?

  2. Dois-je installer des instantanés de A dans mon référentiel local chaque fois que je veux créer un package B ?

Ce deuxième scénario n’est pas très amusant quand A est encore en développement actif.

Des meilleures pratiques ici?

Des meilleures pratiques ici?

Utilisez les options de réacteurs avancés Maven, plus précisément:

 -pl, --projects Build specified reactor projects instead of all projects -am, --also-make If project list is specified, also build projects required by the list 

Donc, cd juste dans le répertoire parent P et lancez:

 mvn install -pl B -am 

Et cela va construire B et les modules requirejs par B.

Maven a été absolument conçu pour ce type de dépendance.

mvn package n’installe rien dans votre repository local, il ne fait que charger le projet et le laisse dans le dossier cible.

Ne mvn install dans le projet parent (A), avec cela tous les sous-modules seront installés dans le référentiel Maven de votre ordinateur, s’il n’y a pas de modifications, il vous suffit de comstackr / comstackr le sous-module (B) et Maven prendra la dépendances déjà installées et installées juste comme il faut.

Vous avez juste besoin d’une mvn install dans le projet parent si vous avez mis à jour une partie du code.

Si vous avez déjà exécuté mvn install sur le projet B, il aura été installé dans votre référentiel local. Par conséquent, lorsque vous créez un package, Maven peut résoudre la dépendance. Donc, tant que vous installez le projet B chaque fois que vous le modifiez, vos builds pour le projet A seront à jour.

Vous pouvez définir un projet multi-module avec un agrégateur pom pour créer un ensemble de projets.

Il vaut également la peine de mentionner m2eclipse , il intègre Maven dans Eclipse et vous permet (éventuellement) de résoudre les dépendances à partir de l’espace de travail. Donc, si vous piratez plusieurs projets, le contenu de l’espace de travail sera utilisé pour la compilation. Une fois que vous êtes satisfait de vos modifications, lancez mvn install (sur chaque projet à tour de rôle ou en utilisant un agrégateur) pour les placer dans votre référentiel local.

Jetez un oeil à ma réponse Maven et les modules dépendants .

Le plug – in Maven Reactor est conçu pour gérer une partie du projet.

L’objective particulier que vous voudrez l’utiliser reactor:make .

Vous dites que vous voulez vraiment B, mais c’est faux. Vous voulez B, mais vous voulez également un A mis à jour s’il y a eu des changements (“développement actif”).

Donc, parfois, vous voulez travailler avec A, B et C. Dans ce cas, vous avez un projet d’agrégation P. Dans le cas où vous voulez travailler avec A et B (mais ne voulez pas C), vous devez créer un projet d’agrégation Q .

Edit 2016 : Les informations ci-dessus étaient peut-être pertinentes en 2009. À partir de 2016, je recommande fortement d’ignorer cela dans la plupart des cas, et d’utiliser simplement les -pl de ligne de commande -am ou -pl comme décrit dans la réponse acceptée. Si vous utilisez une version de maven antérieure à la v2.1, changez cela en premier 🙂