Comment passer SystemProperties lors de l'appel exec: plugin Java Maven?
-
02-10-2019 - |
Question
Je veux utiliser le exec: plug-in Java pour appeler la classe principale de la ligne de commande. Je peux passer des arguments de la ligne de commande à l'aide -Dexec.args="arg0 arg1 arg2"
, je ne sais pas comment passer des propriétés du système. J'ai essayé « -Dexec.systemProperties = "key ="`, mais sans effet.
ressemble pom.xml
comme ceci:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<mainClass>ibis.structure.Structure</mainClass>
</configuration>
</plugin>
La solution
Il n'y a aucun moyen de définir le paramètre <systemProperties>
sur la ligne de commande.
Cependant, étant donné que exec:java
ne fourchue, vous pouvez simplement passer une propriété système à maven et il sera repris par exec:java
ainsi.
mvn -Dkey=value exec:java -Dexec.mainClass=com.yourcompany.yourclass \
-Dexec.args="arg1 arg2 arg3"
Autres conseils
Essayez de suivre pour moi cela fonctionne correctement
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<mainClass>ibis.structure.Structure</mainClass>
<systemProperties>
<systemProperty>
<key>someKey</key>
<value>someValue</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
Je viens de croiser un problème similaire et je voulais écrire une réponse complète pour les autres qui pourraient venir sur cette question.
Bien que la question ne concerne pas pom.xml mais de ligne de commande - il ne dit pas comment faire la même chose avec pom.xml si elle est ici
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>myPackage.MyMain</mainClass>
<systemProperties>
<property>
<key>myKey</key>
<value>myValue</value>
</property>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
Pour la ligne de commande - Je pense que la réponse est bonne Sean Patrick Floyd's
- cependant, si vous avez quelque chose déjà défini dans votre pom.xml il la remplacer.
Il faut donc lancer
mvn exec:java -DmyKey=myValue
devrait également travailler pour vous.
Vous devriez également noter que les exec plugin indique ce qui suit
A list of system properties to be passed.
Note: as the execution is not forked, some system properties required
by the JVM cannot be passed here.
Use MAVEN_OPTS or the exec:exec instead. See the user guide for more information.
Vous pouvez aussi faire quelque chose comme ceci
export MAVEN_OPTS=-DmyKey=myValue
mvn exec:java
et il devrait fonctionner de la même manière.