Pour implémenter ceci avec des profils, vous pouvez utiliser deux profils, un <activeByDefault>
avec tous les modules et un autre avec le module souhaité seulement. Quelque chose comme ceci:
<profiles>
<profile>
<id>all</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<modules>
<module>module-1</module>
...
<module>module-n</module>
</modules>
</profile>
<profile>
<id>module-2</id>
<modules>
<module>module-2</module>
</modules>
</profile>
<profiles>
Et puis appelez comme ceci:
mvn -Pmodule-2 package
Deux choses à noter ici:
- Vous devez déplacer le
<modules>
du POM dans un « défaut "profile (car <modules>
à partir d'un profil sont seulement additifs, ils ne cachent pas les modules déclarés dans le POM).
- En le marquant
<activeByDefault>
, le profil "par défaut" sera choisi si rien d'autre n'est actif mais désactivé si quelque chose d'autre est.
On pourrait même paramétrer le nom du module et de le transmettre comme propriété:
<profiles>
...
<profile>
<id>module-x</id>
<activation>
<property>
<name>module-name</name>
</property>
</activation>
<modules>
<module>${module-name}</module>
</modules>
</profile>
<profiles>
Et invoquer maven comme ceci:
mvn -Dmodule-name=module-2 package
Mais ceci est une mauvaise mise en œuvre à mon humble avis, je préfèrent les options de réacteur «avancées» -pl
(moins de xml, beaucoup plus de puissance et de flexibilité):
mvn -pl module-2 package
@Pascal Thivent Juste brillant .. Je ne sais pas quoi dire .. merci m8, vous êtes à nulle autre pareille quand il s'agit de maven – ant
Je suis d'accord @Pascal est un génie maven. J'ajouterais aussi qu'il est plus simple d'utiliser une construction de réacteur que de configurer plusieurs profils. –