2017-05-12 3 views
0

Je travaille sur un projet utilisant des profils Maven pour différencier des configurations spécifiques à l'environnement. Je cours la version 3.0.5. L'objectif est d'être capable de spécifier l'environnement en faisant passer une propriété du système à la commande d'exécution initiale de l'enveloppe qui correspond à une propriété d'activation, comme suit:Activation du profil Maven à l'aide des propriétés système

pom.xml

<profiles> 
    ... 
    <profile><!-- Local Dev Environment --> 
     <id>local</id> 
     <activation> 
      <property> 
       <name>environment</name> 
       <value>local</value> 
      </property> 
     </activation> 
     <properties> 
      ... 
     </properties> 
    </profile><!-- End Local Dev Environment --> 
    ... 
</profiles> 

commande de démarrage

mvn exec:java -Denvironment=local

Cependant, le profil n'est pas activé (confirmé à l'aide help:active-profiles, qui ne produit pas de sortie). Je suis assez novice avec Maven, mais ça ne devrait pas marcher?

Je crois savoir que l'exécution mvn avec l'option -D me permet de définir propriétés du système (dans ce cas: environment doit être égale local) qui sont ensuite recoupées avec le POM par Maven lors de l'exécution de l'application pour déterminer quels Les critères d'activation du profil sont remplis (par le activation properties requis), puis en exécutant l'application avec ces profils actifs. Y a-t-il quelque chose que je ne suis pas en train de creuser ici?

Répondre

0

J'ai un POM ici pour une petite application de test avec une suite de tests. J'ai inclus votre profil et défini une propriété pour ignorer les tests.

Je peux activer le profil (et passez les tests) en utilisant 2 méthodes différentes:

mvn clean package -Plocal 

ou

mvn clean package -Denvironment=local 

Je ne l'ai pas utilisé le plugin exec avant, je suis à la recherche à présent, mais je ne pense pas que cela devrait changer le comportement du profil.

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.test</groupId> 
    <artifactId>test-app</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <dependencies> 
     <dependency> 
      <groupId>org.testng</groupId> 
      <artifactId>testng</artifactId> 
      <version>6.8.1</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
    </properties> 

    <profiles> 
     <profile><!-- Local Dev Environment --> 
      <id>local</id> 
      <activation> 
       <property> 
        <name>environment</name> 
        <value>local</value> 
       </property> 
      </activation> 
      <properties> 
       <maven.test.skip>true</maven.test.skip> 
      </properties> 
     </profile><!-- End Local Dev Environment --> 
    </profiles> 
</project> 
+0

Je l'ai mentionné dans la question initiale que j'ai essayé d'activer le profil directement en utilisant '-P' et qui a également échoué, ce qui me conduit à penser qu'il ya quelque chose soit avec mon POM ou quelque chose de bizarre avec mon Installation de Maven. –

+0

J'ai édité ma réponse pour inclure un exemple de POM qui fonctionne pour moi, je ne l'ai pas essayé avec le plugin 'exec' cependant. – Matt