如何使用 exec-maven-plugin 设置 VM 参数和程序参数?

How to set both VM Params and Program args using exec-maven-plugin?

我在 运行 java 应用程序中使用 exec-maven-plugin。我需要同时传递 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 使用和覆盖,部分仅用作程序参数。

试图添加到参数中(如 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 问题。

有什么建议吗?

plugin page 上找到了我的问题的答案 - 在它的最后。

This goal helps you run a Java program within the same VM as Maven.

The goal goes to great length to try to mimic the way the VM works, but there are some small subtle differences. Today all differences come from the way the goal deals with thread management.

Note: The java goal doesn't spawn a new process. Any VM specific option that you want to pass to the executed class must be passed to the Maven VM using the MAVEN_OPTS environment variable.

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

在这里找到了解决方案:Using Maven 'exec:exec' with Arguments