2010-09-14 13 views
16

Quiero usar el complemento exec: java para invocar la clase principal desde la línea de comandos. Puedo pasar argumentos de la línea de comando usando -Dexec.args="arg0 arg1 arg2", no sé cómo pasar las propiedades del sistema. Intenté '-Dexec.systemProperties = "clave = valor" `pero sin efecto.Cómo pasar las propiedades del sistema al invocar a exec: java plugin in maven?

pom.xml se parece a esto:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <configuration> 
     <mainClass>ibis.structure.Structure</mainClass> 
    </configuration> 
    </plugin> 

Respuesta

11

No hay manera de establecer el <systemProperties>parameter en la línea de comandos.

Sin embargo, dado que exec:java no está bifurcado, puede pasar una propiedad del sistema a maven y también será recogido por exec:java.

mvn -Dkey=value exec:java -Dexec.mainClass=com.yourcompany.yourclass \ 
    -Dexec.args="arg1 arg2 arg3" 
+0

pensé -Dexec.args es de argumentos que se pasan a la clase principal. – Alexandru

+0

sí, estaba equivocado. lo siento, actualicé mi respuesta. '' y '' ambos hacen más o menos lo mismo internamente. –

+2

Esto no funciona para mí :( –

6

Acabo de tropezar con un problema similar y quería escribir una respuesta completa para los demás que podrían surgir esta pregunta.

A pesar de que la pregunta no es sobre pom.xml sino de línea de comandos - que no se indique 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> 

Para la línea de comandos - Creo Sean Patrick Floyd's la respuesta es buena; sin embargo, si ya tiene algo definido en su pom.xml, lo anulará.

Entonces, ejecutar

mvn exec:java -DmyKey=myValue 

también debería funcionar para usted.

También debe tener en cuenta que los estados exec plugin's documentations la 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.

20

intente 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> 
Cuestiones relacionadas