Construire un module unique à partir de pom multimodule
-
06-07-2019 - |
Question
Est-il possible de le faire?
Environnement: Le pom multimodule est composé de 3 modules: mm1, mm2, mm3. Le module mm2 a mm1 comme dépendance. Il est possible de créer un pom parent sans erreur.
La question: Est-il possible de construire un seul module mm2 (c'est-à-dire, exécuter maven à partir du répertoire de base mm2) sans installer mm1 dans un référentiel local?
Merci.
La solution
Sans installation automatique non, mais il est possible de ne construire que des projets choisis. Vous devez avoir la construction de plusieurs modules (je suppose que vous faites). En mode réacteur, chaque commande doit être exécutée à partir de la racine du réacteur .
Donc dans votre cas:
réacteur mvn: make -Dmake.folders = mm2
Dans ce cas, vous construisez le module mm2 et les modules dont il dépend (mm1).
Liens utiles:
À partir d'exemples de livre, je ne construis que des projets persistants et son modèle de projet de dépendance. D'autres projets ne sont pas touchés
réacteur mvn: make -Dmake.folders = sample-persist
Une autre commande utile est reacteur: make-dependents
qui construit des projets qui dépendent de X.
Autres conseils
Je ne suis pas sûr de comprendre ce que vous voulez dire exactement par "sans installer mm1 dans un référentiel local". Voulez-vous dire précédemment à la construction de mm2 ou jamais?
En cas de doute, peut-être une des nouvelles options de construction annoncées dans les Trucs et astuces Maven: les options de réacteur avancées peuvent vous aider:
À partir de la version Maven 2.1, il y a une nouvelle ligne de commande Maven options qui vous permettent de manipuler la façon dont Maven va construire projets multimodules. Ces nouveaux les options sont:
-rf, --resume-from Resume reactor from specified project -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 -amd, --also-make-dependents If project list is specified, also build projects that depend on projects on the list
Je pensais spécifiquement aux options -pl
et -am
. Pour créer un sous-ensemble de modules, exécutez ce qui suit à partir du répertoire racine
$ mvn --projects mm2 --also-make install
Cependant, je ne suis pas sûr que cela réponde à votre question (ce qui n'est pas tout à fait clair pour moi).
Cela va à l’encontre du principe de dépendance de Maven2. Quel est l’intérêt de le faire exactement?
Cependant, nous pouvons imaginer définir la dépendance mm1 de mm2 en tant que dépendance système
:
<dependency>
<groupId>...</groupId>
<artifactId>mm1</artifactId>
<version>...</version>
<scope>system</scope>
<systemPath>../mm1/target/</systemPath>
</dependency>