58

如何为从 maven-jetty-plugin 运行的 Jetty 设置 VM 参数?

例如,我需要将-Xmx参数传递给命令运行的 Jetty mvn jetty:run

4

9 回答 9

63

环境变量 MAVEN_OPTS就是答案。MAVEN_OPTS 的字符串内容被传递给 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 的解决方案,这是Jetty 插件的一个新特性。这是一个更好的解决方案,因为前者在与 Maven 相同的 JVM 进程中运行(因此共享内存)。

于 2010-01-05T16:57:55.497 回答
47

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

有关更多信息,请参阅:jetty:run-forked :在单独的 jvm 中运行未组装的 webapp

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

于 2012-11-14T21:57:17.700 回答
14

看来您当前的方法是正确的 - 通过 maven 运行 jetty 时,jetty 是 maven 进程中的一个线程。所以增加maven的堆会增加码头的堆。

你是如何设置 MAVEN_OPTS 的?

我发现的一个示例如下所示: MAVEN_OPTS='-Xmx256m -Xms10m' mvn clean jetty:run

请注意,MAVEN_OPTS这里是一个环境变量,而不是传递给 JVM(谁不知道如何处理它)。

于 2010-01-05T16:01:52.097 回答
10

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

mvn clean install -DargLine="-Xmx1524m" 
于 2015-05-25T15:04:48.463 回答
4

<jvmArgs>这里提到的参数: Maven jetty 插件 对我不起作用。

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 &
于 2013-06-05T06:42:08.203 回答
2

在 Linux/Unix 上

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

会成功的

于 2012-04-23T15:20:09.550 回答
2

该插件允许您像这样指定 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>
于 2012-12-02T03:15:20.180 回答
0

您可以使用传递 -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>
于 2014-03-14T06:25:51.463 回答
0

没有办法使用命令行。但是您可以将mvn.cmd/复制mvn.shmvnhp.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%
于 2016-08-21T10:22:41.027 回答