Come passare SystemProperties quando si invoca exec: java plugin Maven?
-
02-10-2019 - |
Domanda
Voglio usare l'exec: java plugin per richiamare la classe principale da linea di comando. Posso passare gli argomenti dalla riga di comando utilizzando -Dexec.args="arg0 arg1 arg2"
, non so come passare le proprietà del sistema. Ho provato '-Dexec.systemProperties = "chiave = valore" `, ma senza alcun effetto.
sguardi pom.xml
come questo:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<mainClass>ibis.structure.Structure</mainClass>
</configuration>
</plugin>
Soluzione
Non v'è alcun modo per impostare il <systemProperties>
parametro sulla riga di comando.
Tuttavia, poiché exec:java
non è biforcuta, si può semplicemente passare una proprietà di sistema per Maven e sarà preso da exec:java
pure.
mvn -Dkey=value exec:java -Dexec.mainClass=com.yourcompany.yourclass \
-Dexec.args="arg1 arg2 arg3"
Altri suggerimenti
Prova segue per me funziona correttamente
<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>
Ho appena incontrato un problema simile e ho voluto scrivere una risposta completa per gli altri che potrebbero venire attraverso questa domanda.
Anche se la questione non riguarda pom.xml ma su linea di comando - non indica come fare la stessa cosa con pom.xml ecco che è
<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>
Per la linea di comando - Penso risposta Sean Patrick Floyd's
è buono - tuttavia, se avete qualcosa di già definito nel pom.xml avrà la precedenza esso.
Quindi, in esecuzione
mvn exec:java -DmyKey=myValue
dovrebbe funzionare anche per voi.
Si dovrebbe anche notare che il exec del plugin documentazione afferma il seguente
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.
Così si può anche fare qualcosa di simile
export MAVEN_OPTS=-DmyKey=myValue
mvn exec:java
e dovrebbe funzionare allo stesso modo.