如何控制maven-jetty-plugin的VM参数?

如何从Maven-jetty-plugin运行Jetty设置VM参数?

例如,我需要将-Xmxparameter passing给由mvn jetty:run命令运行的Jetty。

环境variablesMAVEN_OPTS就是答案。 MAVEN_OPTS的string内容被传递给JVM(java.exe)。

  • Linux:在shell中export MAVEN_OPTS=....
  • Windows:在shell(cmd.exe)中set MAVEN_OPTS=...

例如:在Windows上set MAVEN_OPTS="-Xmx1024m"将Maven进程的堆大小设置为1024mb。

更新 (01.04.2013):直接传递给Jetty。

马修·法威尔(Matthew Farwell)(请提供他的答案给他信用)带有使用分叉JVM过程运行Jetty的解决scheme,Jetty是Jetty插件的一个新function 。 这是一个更好的解决scheme,因为前者与Maven在相同的JVM进程中运行(因此共享内存)。

使用更新版本的maven-jetty-plugin,你可以使用mvn:run-forked 。 选项jvmArgs将允许你设置-Xmx等

有关更多信息,请参阅: jetty:run-forked:在单独的jvm中运行未组装的Web应用程序 。

我认为最初的问题是在单独的JVM中启动Jetty 。

看来你目前的做法是正确的 – 当通过maven运行jetty时,jetty是maven进程中的一个线程。 所以增加maven的堆将增加docker的堆。

你如何设置MAVEN_OPTS?

我发现的一个例子是这样的: MAVEN_OPTS='-Xmx256m -Xms10m' mvn clean jetty:run

请注意, MAVEN_OPTS在这里是一个环境variables,并没有传递给JVM(谁不知道如何处理它)。

这里提到的<jvmArgs>参数: Mavendocker插件没有为我工作。

Maven版本:Apache Maven 3.0.3

Jetty Maven插件版本:jetty-maven-plugin:8.1.10.v20130312

这工作:

 MAVEN_OPTS='-Xmx4096m -Xms4096m' export MAVEN_OPTS mvn jetty:run & 

在Linux / Unix上

 export MAVEN_OPTS="-Xmx256m" && mvn clean install jetty:run 

会做的伎俩

要通过命令行指定vm参数(如最初所述),可以执行以下操作:

 mvn clean install -DargLine="-Xmx1524m" 

如何: mvn -DMAVEN_OPTS=-Xmx1024m jetty:run

该插件允许你指定jvmArgs,如下所示:

 <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <configuration> <jvmArgs>-Xmx1024</jvmArgs> <scanIntervalSeconds>10</scanIntervalSeconds> <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> <port>8080</port> <maxIdleTime>60000</maxIdleTime> </connector> </connectors> <webAppConfig> <jettyEnvXml>jetty-env.xml</jettyEnvXml> </webAppConfig> </configuration> <executions> <execution> <phase>test</phase> <goals> <goal>run-exploded</goal> </goals> </execution> </executions> </plugin> 

你可以使用传递-Xmx参数。

 <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version></version> <configuration> <jvmArgs>-Xmx -Xms -XX:PermSize= -XX:MaxPermSize= -XX:+HeapDumpOnOutOfMemoryError</jvmArgs> <scanIntervalSeconds>1</scanIntervalSeconds> <stopKey>stop-jetty</stopKey> <stopPort>9999</stopPort> <systemProperties> <systemProperty> <name>jetty.port</name> <value>9090</value> </systemProperty> <systemProperty> <name>spring.profiles.active</name> <value></value> </systemProperty> </systemProperties> <webApp> <contextPath>/</contextPath> </webApp> </configuration> </plugin> 

没有办法使用命令行。 但是您可以将mvn.cmd / mvn.sh复制到mvnhp.cmd并更改行

 %MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Dmaven.home=%M2_HOME%" "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS% 

 %MAVEN_JAVA_EXE% -Xmx1024m %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Dmaven.home=%M2_HOME%" "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%