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

Tat*_*dik 6 jvm-arguments maven-plugin maven-3 maven exec-maven-plugin

我正在使用 exec-maven-plugin 来运行 java 应用程序。我需要传递 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>
Run Code Online (Sandbox Code Playgroud)

...

并运行程序:

mvn exec:java@MyId  -Dexec.args="my params"
Run Code Online (Sandbox Code Playgroud)

但是看起来 pom.xml 中设置的参数没有被 -Dexec.args 使用和覆盖,并且 section 仅用作程序参数。

试图添加到参数中(如本文所示),但遇到了

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]
Run Code Online (Sandbox Code Playgroud)

在 jboss.org 上发现了类似的未解决问题。

有什么建议?

Tat*_*dik 3

在插件页面的最后找到了我的问题的答案。

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

我们的目标是竭尽全力尝试模仿虚拟机的工作方式,但也存在一些细微的差别。今天,所有差异都来自于目标处理线程管理的方式。

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

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

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