如何使用exec-maven-plugin设置VM Params和Program args?

时间:2018-05-09 19:28:04

标签: maven maven-3 maven-plugin jvm-arguments exec-maven-plugin

我正在使用exec-maven-plugin来运行java app。我需要传递JVM参数和程序参数。我正在设置这样的JVM参数:

<artifactId>exec-maven-plugin</artifactId>
       <version>1.6.0</version>
           <executions>
               <execution>
                   <id>MyId</id>
                   <goals>
                       <goal>java</goal>
                   </goals>
                   <configuration>
                       <mainClass>MyClass</mainClass>
                       <arguments>
                           <argument>-XX:+UseG1GC</argument>
                           <argument>-Xms2G</argument>
                           <argument>-Xmx2G</argument>                                    
                       </arguments>
                   </configuration>
               </execution>

...

并运行程序:

mvn exec:java@MyId  -Dexec.args="my params"

然而,看起来pom.xml中设置的参数不会被-Dexec.args使用和覆盖,而section仅用作程序参数。

尝试添加到参数中(如this article所示),但遇到了

Unable to parse configuration of mojo org.codehaus.mojo:exec-maven-plugin:1.6.0:java for parameter arguments: Cannot store value into array:
ArrayStoreException -> [Help 1]

在jboss.org上发现了类似的unresolved问题。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

plugin page - 最后找到我的问题的答案。

  

此目标可帮助您在与Maven相同的VM中运行Java程序。

     

为了模仿VM的工作方式,目标很长   但是有一些细微的差别。今天所有的差异   来自目标处理线程管理的方式。

     

注意:java目标不会产生新进程。 任何特定于VM的   必须将要传递给已执行类的选项传递给   使用MAVEN_OPTS环境变量的Maven VM。

这对我不起作用,所以切换到mvn exec:exec模式。适用于那里的JVM参数。

在此处找到解决方案:Using Maven 'exec:exec' with Arguments