Comment exécuter un objectif différent pour un module d'un projet multi-module?
J'ai un projet qui est composé de deux modules différents. Je n'ai pas de contrôle sur les fichiers pom de ces modules et ne peut donc pas les modifier. J'ai le plein contrôle sur le projet pom fichier. Projet id n'est pas défini comme un parent dans les modules.
Structure de dossier:
project
+ module1
+ module2
Dans le cadre d'un travail autour de j'ai besoin d'exécuter deux objectifs différents pour les deux modules, de sorte que module1 est installé dans le dépôt local, mais pas module2. C'est juste un exemple. Mon réel problème contient plus de niveaux avec plus de 2 modules par niveau.
Pour minimiser la configuration nécessaire pour mon système CI, je veux courir dans une maven appel.
J'ai été "rêve" de quelque chose le long des lignes de
mvn install -Dspecial=module:compile
Est-ce possible et si oui, comment dois-je faire?
source d'informationauteur Peter Schuetze
Vous devez vous connecter pour publier un commentaire.
Je crains que ce ne sera pas possible. Comme je l'ai expliqué dans cette réponsela phase ou l'objectif invoqué dans le cadre d'un multi modules de construire est exécuté sur tous les modules.
Si vous souhaitez exécuter une phase différente ou un objectif pour un sous-ensemble des sous-modules, vous aurez à appeler maven deux fois, peut-être à l'aide de la
--projects
-pl
options pour choisir le bon sous-ensemble:mvn -pl module1,module3 somegoal
mvn -pl module2 someothergoal
Le seul moyen de contrôler qui objectifs/exécutions (pas phases) sont exécutées au cours d'une Maven build quel que soit votre projet de a module ou pas, c'est par le biais de profils.
Par exemple :
/pom.xml
/module1/pom.xml
/module2/pom.xml
Lors de l'exécution de
mvn -Pmodule2:ignore-compile package
. Vous remarquerez que la source de la compilation (mais seulement dans ce but et l'exécution !) sera ignoré pour module2.Vous pouvez également utiliser
activation
:Ensuite avec la commande:
mvn -Dmodule2:ignore-compile package
Enfin, une intéressante est la capacité de changer de module par le biais d'un profil:
/pom.xml
Ignorer
module2
:mvn '-P!with:module2' package