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

落花浮王杯 提交于 2021-02-07 18:08:56

问题


I am using exec-maven-plugin to run java app. I need to pass both JVM params and program arguments. I am setting JVM params like this:

<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>

...

and run the program:

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

However it looks like arguments set in pom.xml are not used and overwritten by -Dexec.args, and section is used only as program arguments.

Tried to add into arguments (as shown in this article), but ran into

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]

Found similar unresolved problem on jboss.org.

Any suggestions?


回答1:


Found the answer for my question on the plugin page - at the very end of it.

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.

That doesn't work for me, so switching to mvn exec:exec mode. works for JVM params there.

Found a solution here: Using Maven 'exec:exec' with Arguments



来源:https://stackoverflow.com/questions/50260743/how-to-set-both-vm-params-and-program-args-using-exec-maven-plugin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!