2011-03-22 10 views
25

Estoy sorprendido de que lo que debería haber sido un trabajo muy fácil se esté convirtiendo en una tarea muy molesta para mí. Todo lo que necesito es pasar algunos parámetros de línea de comandos a mi maven exec: plugin exec. Desafortunadamente, las horas de Google no han ayudado en absoluto.Pase la línea de comandos Params en mvn exec: exec

Aquí es mi complemento

  <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.2</version> 
      <dependencies> 
       <dependency> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-instrument</artifactId> 
        <version>${spring.version}</version> 
       </dependency> 
      </dependencies> 
      <configuration> 
       <executable>java</executable> 
       <arguments> 
        <argument>-classpath</argument> 
        <classpath /> 
        <argument>-javaagent:${settings.localRepository}/org/springframework/spring-instrument/${spring.version}/spring-instrument-${spring.version}.jar</argument> 
        <argument>-Xmx256m</argument> 
        <argument>com.myPackage.Myclass</argument> 
       </arguments> 
      </configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>exec</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

ahora desde la línea de comandos que estoy escribiendo en

mvn exec:exec -Dexec.args=-Dmy.property=myProperty 

También probé

mvn exec:exec -Dexec.arguments=-Dmy.property=myProperty 

y muchas otras cosas. Sin embargo, nada parece estar funcionando. Sé que el ejecutor se ejecuta en una máquina virtual separada, pero según la documentación -Dexec.args debería funcionar para mí. ¿Puede alguien sugerir por favor dónde estoy yendo mal?

Respuesta

17

yo era capaz de obtener argumentos de JVM que trabajan para exec: Exec mediante el siguiente después de leer this article:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <executions> 
      <execution> 
       <goals> 
        <goal>java</goal> 
       </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <executable>java</executable> 
      <arguments> 
       <argument>-Dhttp.proxyHost=myproxy.example.com</argument> 
       <argument>-Dhttp.proxyPort=8080</argument> 
       <argument>-classpath</argument> 
       <classpath /> 
       <argument>com.example.Main</argument> 
      </arguments> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 
2

Si desea pasar los argumentos de la línea de comandos a Java VM, use la etiqueta <commandlineArgs> en lugar de <arguments>. Maven Exec Plugin

Saludos

+2

AFAIK esto es incorrecto. '' anula todo lo que establezca en la lista ''; ellos sirven el mismo propósito. – smallsense

0

utilizo la línea de comandos siguiente configuración al pasar me lo quitaron a mi Principal- Clase con el plugin de exceution

mvn clean install -Dexec.arguments="arg0" 
+0

no funciona cuando se usa el ejecutor de metas: exec –

17

Dos formas de pasar argumentos de línea de comando en mvn: exec:

Método 1, en la línea de comandos:

mvn exec:java -Dexec.mainClass="com.myPackage.myClass" -Dexec.args="command line arguments" 

Método 2, en el archivo Maven POM:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <configuration> 
     <mainClass>com.myPackage.myClass</mainClass> 
     <commandlineArgs>command line arguments</commandlineArgs> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 

Luego en la línea de comandos todo lo que tiene que hacer es ejecutar:

mvn exec:java 

Buena suerte.

+0

Finalmente, el ejemplo de trabajar en línea de comandos. El problema es que la documentación oficial para este complemento especifica la propiedad ['commandlineArgs'] (http://www.mojohaus.org/exec-maven-plugin/java-mojo.html#commandlineArgs) mientras que el hecho es que está ** 'args' ** en su lugar. – uvsmtid

2

¿por qué no utilizar la propiedad del sistema?

  <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.3.2</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>java</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <mainClass>bobo.Abc</mainClass> 
        <arguments> 
         <argument>argument1</argument> 
        </arguments> 
        <systemProperties> 
         <systemProperty> 
          <key>jvmProperty1</key> 
          <value>dev</value> 
         </systemProperty> 
        </systemProperties> 
       </configuration> 
      </plugin>