简体   繁体   English

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

[英]How to control VM arguments for maven-jetty-plugin?

How to set VM arguments for Jetty run from maven-jetty-plugin? 如何设置Jetty的VM参数从maven-jetty-plugin运行?

For example, I need to pass -Xmx arguments to Jetty run by the mvn jetty:run command. 例如,我需要通过mvn jetty:run命令将-Xmx参数传递给Jetty。

The enviroment variable MAVEN_OPTS is the answer. 环境变量MAVEN_OPTS就是答案。 The string content of MAVEN_OPTS is passed to JVM (java.exe). MAVEN_OPTS的字符串内容传递给JVM(java.exe)。

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

For example: on Windows set MAVEN_OPTS="-Xmx1024m" sets the heap size of the Maven process to 1024mb. 例如:在Windows上set MAVEN_OPTS="-Xmx1024m"将Maven进程的堆大小设置为1024mb。

Update (01.04.2013): Pass it directly to Jetty. 更新 (01.04.2013):直接传递给Jetty。

Matthew Farwell (please upvote his answer to give him credit) comes with the solution of using a forked JVM process to run Jetty which is a new feature of the Jetty plugin . Matthew Farwell(请给出他的答案 ),它提供了使用分叉JVM进程来运行Jetty的解决方案,这是Jetty插件的一个新功能 This is a better solution as the former runs inside same JVM process as Maven (thus shares memory). 这是一个更好的解决方案,因为前者在与Maven相同的JVM进程内运行(因此共享内存)。

With more recent versions of the maven-jetty-plugin, you can use mvn:run-forked . 使用更新版本的maven-jetty-plugin,您可以使用mvn:run-forked The option jvmArgs will allow you to set -Xmx etc. 选项jvmArgs将允许您设置-Xmx等。

For more information, see: jetty:run-forked : Running an unassembled webapp in a separate jvm . 有关更多信息,请参阅: jetty:run-forked:在单独的jvm中运行未组装的webapp

I think the original issue was Starting Jetty in separate JVM . 我认为最初的问题是在单独的JVM中启动Jetty

It seems like your current approach is correct - when running jetty through maven, jetty is a thread inside the maven process. 看起来你当前的方法是正确的 - 当通过maven运行jetty时,jetty是maven进程中的一个线程。 So increasing maven's heap will increase jetty's heap. 因此增加maven的堆将增加jetty的堆。

How are you setting MAVEN_OPTS? 你是如何设置MAVEN_OPTS的?

One example I found looks like this: MAVEN_OPTS='-Xmx256m -Xms10m' mvn clean jetty:run 我找到的一个例子如下: MAVEN_OPTS='-Xmx256m -Xms10m' mvn clean jetty:run

Note that MAVEN_OPTS is an environment variable here, and not passed to the JVM (who wouldn't know what to do with it). 请注意, MAVEN_OPTS是一个环境变量,不会传递给JVM(谁不知道如何处理它)。

要通过命令行指定vm参数(如最初要求的那样),您可以执行以下操作:

mvn clean install -DargLine="-Xmx1524m" 

The <jvmArgs> param mentioned here : Maven jetty plugin didn't work for me . 这里提到的<jvmArgs> param: Maven jetty插件对我不起作用。

Maven version : Apache Maven 3.0.3 Maven版本:Apache Maven 3.0.3

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

This worked : 这有效:

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

On Linux/Unix 在Linux / Unix上

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

will do the trick 会做的

The plugin allows you to specify jvmArgs like this: 该插件允许您指定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>

you can use to pass -Xmx argument like; 你可以使用传递-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>

There is no way using the commandline. 无法使用命令行。 But you could copy the mvn.cmd / mvn.sh to mvnhp.cmd and change the line 但您可以将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%

To

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM