web-dev-qa-db-fra.com

Utilisation de profils pour contrôler quels modules Maven sont construits

J'ai le XML suivant dans mon maven POM.xml:

<profiles>
  <profile>
     <id>default</id>
     <activation>
        <activeByDefault>true</activeByDefault>
        <property>
           <name>default</name>
           <value>!disabled</value>
        </property>
     </activation>
     <modules>
        <module>m1</module>
        <module>m2</module>
        <module>m3</module>
     </modules>
  </profile>
  <profile>
     <id>x</id>
     <modules>
        <module>m1</module>
     </modules>
  </profile>
</profiles>

Ce que j'essaie de réaliser, c'est ceci:

  1. Quand je lance mvn install, Je veux qu'il construise des projets m1, m2 et m3.

  2. Quand je lance mvn install -Px, Je veux qu'il seulement build m1.

Mon problème actuel est qu'avec le code ci-dessus, l'option 2 construit tous les m1, m2 et m3.

33
Galder Zamarreño

J'ai trouvé la solution, définissez d'abord le profil 'x' et le 'défaut' et ça fonctionne très bien (fou Maven !!). Voici le résultat final:

   <profiles>
      <!-- DO NOT CHANGE THE *ORDER* IN WHICH THESE PROFILES ARE DEFINED! -->
      <profile>
         <id>x</id>
         <modules>
            <module>m1</module>
         </modules>
      </profile>
      <profile>
         <id>default</id>
         <activation>
            <activeByDefault>true</activeByDefault>
         </activation>
         <modules>
            <module>m1</module>
            <module>m2</module>
            <module>m3</module>
         </modules>
      </profile>
   </profiles>
44
Galder Zamarreño

Vous pouvez désactiver les profils maven qui ont runByDefault défini sur true à partir de la ligne de commande comme suit:

mvn install -P !default

Notez que cela nécessite Maven version 2.0.10.

5
EMMERICH