2010-03-08 3 views
8

J'ai un projet maven multi-module, qui construit avec succès, je voudrais construire juste un des modules que j'ai. Comment ferais-je cela avec profiles? Je pourrais le faire à partir de la console de deux façons, une façon est d'aller au module enfant et mvn package ou je pourrais utiliser réacteur pour construire un seul module.Profil Maven pour un seul module

Puis-je faire la même chose avec les profils? En modifiant POM? Thank you

EDIT

Si est impossible de POM, je peux le faire de settings.xml?

Répondre

13

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:

  1. 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).
  2. 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 
+0

@Pascal Thivent Juste brillant .. Je ne sais pas quoi dire .. merci m8, vous êtes à nulle autre pareille quand il s'agit de maven – ant

+0

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. –

Questions connexes