72 votes

Définition des valeurs par défaut pour personnaliser Maven 2 propriétés

J'ai un Maven pom.xml avec un plugin que je veux être en mesure de contrôler sur la ligne de commande. Tout fonctionne sinon bien, à l'exception, même après recherche sur le net d'un moment, je ne peux pas comprendre comment définir une valeur par défaut pour mon contrôle de la propriété:

<plugin>
    ...
    <configuration>
        <param>${myProperty}</param>
    </configuration>
    ...
</plugin>

Donc, si je exécuter Maven avec

mvn -DmyProperty=something ...

tout va bien, mais j'aimerais avoir une valeur spécifique attribué à myProperty aussi sans l' -DmyProperty=... de l'interrupteur. Comment cela peut-il être fait?

81voto

akostadinov Points 3272

Vieille question, mais je pense que la réponse la plus simple n'est pas là. Vous pouvez avoir la propriété valeur par défaut définie en <build>/<properties> ou dans un profil comme indiqué ci-dessous. Lorsque vous fournissez la valeur de la propriété sur la ligne de commande avec -DmyProperty=anotherValue , alors il sera de remplacer la définition de la POM. J'espère que j'ai été en mesure d'expliquer..

<profile>
    ...
    <properties>
        <myProperty>defaultValue</myProperty>            
    </properties>
    ...
       <configuration>
          <param>${myProperty}</param>
       </configuration>
    ...
</profile>

39voto

DavidValeri Points 1494

Taylor L approche fonctionne très bien, mais vous n'avez pas besoin de l'appoint de profil. Vous pouvez simplement déclarer les valeurs de propriété dans le fichier POM.

<project>
  ...
      <properties>
    <!-- Sets the location that Apache Cargo will use to install containers when they are downloaded. 
         Executions of the plug-in should append the container name and version to this path. 
         E.g. apache-tomcat-5.5.20 --> 
    <cargo.container.install.dir>${user.home}/.m2/cargo/containers</cargo.container.install.dir> 
  </properties> 
</project>

Vous pouvez également définir les propriétés de votre utilisateur settings.xml fichier dans le cas où vous voulez que chaque utilisateur d'être en mesure de définir leurs propres paramètres par défaut. Nous utilisons cette approche pour masquer les informations d'identification du serveur CI utilise pour certains plugins de développeurs.

27voto

Taylor Leese Points 18895

Vous pouvez utiliser quelque chose comme ci-dessous:

<profile>
    <id>default</id>
    <properties>
        <env>default</env>
        <myProperty>someValue</myProperty>            
    </properties>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

1voto

sal Points 8058

Cela pourrait fonctionner pour vous:

<profiles>
  <profile>
    <id>default</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <build>
     <plugin>
       <configuration>
        <param>Foo</param>
       </configuration>
     </plugin>
    </build>
    ...
  </profile>
  <profile>
    <id>notdefault</id>
    ...
     <build>
      <plugin>
        <configuration>
            <param>${myProperty}</param>
        </configuration>
     </plugin>
     </build>
    ...
  </profile>
</profiles>

De cette façon,

mvn clean utilisera "toto" en tant que par défaut param. Dans le cas où vous avez besoin de remplacer, utilisez mvn -P notdefault -DmyProperty=something

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X