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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/2007192/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-13 02:24:50  来源:igfitidea点击:

How to control VM arguments for maven-jetty-plugin?

javajettymaven-2maven-jetty-plugin

提问by Michal Bernhard

How to set VM arguments for Jetty run from maven-jetty-plugin?

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

For example, I need to pass -Xmxarguments to Jetty run by the mvn jetty:runcommand.

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

采纳答案by Michal Bernhard

The enviroment variable MAVEN_OPTSis the answer. The string content of MAVEN_OPTS is passed to JVM (java.exe).

环境变量 MAVEN_OPTS就是答案。MAVEN_OPTS 的字符串内容传递给 JVM(java.exe)。

  • Linux: in shell type export MAVEN_OPTS=....
  • Windows: in shell (cmd.exe) type set MAVEN_OPTS=...
  • Linux:在 shell 类型中 export 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 answerto 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. This is a better solution as the former runs inside same JVM process as Maven (thus shares memory).

Matthew Farwell(请给他的回答点赞)提供了使用分叉 JVM 进程运行 Jetty 的解决方案,这是Jetty 插件的一个新功能。这是一个更好的解决方案,因为前者在与 Maven 相同的 JVM 进程中运行(因此共享内存)。

回答by danben

It seems like your current approach is correct - when running jetty through maven, jetty is a thread inside the maven process. So increasing maven's heap will increase jetty's heap.

看起来您当前的方法是正确的 - 通过 maven 运行 jetty 时,jetty 是 maven 进程中的一个线程。所以增加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_OPTSis an environment variable here, and not passed to the JVM (who wouldn't know what to do with it).

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

回答by Gonzalo Gómez García

On Linux/Unix

在 Linux/Unix 上

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

will do the trick

会做的伎俩

回答by Matthew Farwell

With more recent versions of the maven-jetty-plugin, you can use mvn:run-forked. The option jvmArgs will allow you to set -Xmx etc.

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

For more information, see: jetty:run-forked : Running an unassembled webapp in a separate jvm.

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

I think the original issue was Starting Jetty in separate JVM.

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

回答by doredson

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>

回答by Binita Bharati

The <jvmArgs>param mentioned here : Maven jetty plugindidn't work for me .

<jvmArgs>这里提到的参数: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 &

回答by user2663609

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>

回答by Chris Ritchie

To specify vm arguments via the command line (as originally asked) you can do the following:

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

mvn clean install -DargLine="-Xmx1524m" 

回答by Grim

There is no way using the commandline. But you could copy the mvn.cmd/ mvn.shto mvnhp.cmdand change the line

没有办法使用命令行。但是您可以将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%

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%