Cómo pasar SystemProperties al invocar ejecutivo: plugin de Java en el experto?
-
02-10-2019 - |
Pregunta
Quiero usar el ejecutivo: plugin de Java para invocar la clase principal de la línea de comandos. Puedo pasar argumentos desde la línea de comandos usando -Dexec.args="arg0 arg1 arg2"
, no sé cómo pasar las propiedades del sistema. Probé '-Dexec.systemProperties = "clave = valor" `pero sin efecto.
miradas pom.xml
como esta:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<mainClass>ibis.structure.Structure</mainClass>
</configuration>
</plugin>
Solución
No hay manera de establecer el <systemProperties>
parámetro en la línea de comandos.
Sin embargo, desde exec:java
no se bifurca, se puede pasar sólo una propiedad del sistema de experto y será recogido por exec:java
también.
mvn -Dkey=value exec:java -Dexec.mainClass=com.yourcompany.yourclass \
-Dexec.args="arg1 arg2 arg3"
Otros consejos
Trate de seguir para mí funciona correctamente
<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>
Me acabo de encontrar con un problema similar y quería escribir una respuesta completa para otros que puedan venir a través de esta pregunta.
A pesar de que la pregunta no es sobre pom.xml sino de línea de comandos - que no indica cómo hacer lo mismo con pom.xml así que aquí está
<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>
En la línea de comandos - creo que la respuesta es buena Sean Patrick Floyd's
- sin embargo, si usted tiene algo que ya está definido en su pom.xml prevalecerá sobre ella.
Entonces, ejecutar
mvn exec:java -DmyKey=myValue
También debe trabajar para usted.
También debe tener en cuenta que el ejecutivo de plugins documentaciones establece lo siguiente
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.
Así también se puede hacer algo como esto
export MAVEN_OPTS=-DmyKey=myValue
mvn exec:java
y debería funcionar de la misma manera.