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>
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top