Java 如何控制maven jetty插件的VM参数?

Java 如何控制maven jetty插件的VM参数?,java,jetty,maven-2,maven-jetty-plugin,Java,Jetty,Maven 2,Maven Jetty Plugin,如何从maven Jetty插件为Jetty运行设置VM参数 例如,我需要将-Xmx参数传递给通过mvn Jetty:run命令运行的Jetty。您当前的方法似乎是正确的-通过maven运行Jetty时,Jetty是maven进程中的一个线程。因此,增加maven的堆将增加jetty的堆 您如何设置MAVEN_选项 我发现的一个例子是这样的:MAVEN_OPTS='-Xmx256m-Xms10m'mvn clean jetty:run 请注意,MAVEN\u OPTS在这里是一个环境变量,而不是

如何从maven Jetty插件为Jetty运行设置VM参数


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

您当前的方法似乎是正确的-通过maven运行Jetty时,Jetty是maven进程中的一个线程。因此,增加maven的堆将增加jetty的堆

您如何设置MAVEN_选项

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


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

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

  • Linux:在shell类型中导出MAVEN_OPTS=..
  • Windows:在shell(cmd.exe)中键入
    set MAVEN\u OPTS=…
例如:在Windows上
set MAVEN_OPTS=“-Xmx1024m”
将MAVEN进程的堆大小设置为1024mb

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

Matthew Farwell(请向上投票给他)提供了使用分叉JVM进程来运行Jetty的解决方案,Jetty是。这是一个更好的解决方案,因为前者在与Maven相同的JVM进程中运行(因此共享内存)。

在Linux/Unix上

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

将实现这一技巧

对于最新版本的maven jetty插件,您可以使用
mvn:run forked
。jvmArgs选项将允许您设置-Xmx等

有关详细信息,请参阅:


我认为最初的问题是。

该插件允许您如下指定JVMARG:

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

org.mortbay.jetty
jetty maven插件
-Xmx1024
10
8080
60000
jetty-env.xml
测试
跑爆
此处提到的
参数: 不适合我

Maven版本:ApacheMaven 3.0.3

Jetty Maven插件版本:Jetty Maven插件:8.1.10.v20130312

这起到了作用:

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

您可以使用传递-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>

org.eclipse.jetty
jetty maven插件
-Xmx-Xms-XX:PermSize=-XX:MaxPermSize=-XX:+HeapDumpOnOutOfMemoryError
1.
停靠码头
9999
码头
9090
spring.profiles.active
/

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

mvn clean install -DargLine="-Xmx1524m" 

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


这不会为整个JVM运行设置它吗?有没有办法让它影响jetty的启动?是的,请看(并投票赞成)Matthew Farwell的新答案-jetty插件有一个新特性,可以在单独的jvm中运行jetty,并有自己的论证。我知道这个问题确实很老,但你找到解决方案了吗?(我的意思是不为整个JVM添加参数,而只为jetty添加参数)我认为Cargo可以做到这一点,但我不想为我的项目添加其他内容……是的,使用-DargLine。。。请参阅下面我的答案,了解完整示例DargLine不适用于jetty:run,它适用于jetty:run forkeddid不适用于我,我尝试了:org.mortbay.jetty jetty maven plugin 8.1.5.v20120716-Xmx2048M-XX:MaxPermSize=2048m${project.basedir}/war${project.basedir}/war/WEB-INF/WEB.xml@davidjnelson您需要使用
jetty:runforked
goal。请参阅:上面Matthew Farwell的回答:。但是,当键入的命令是
mvn clean install
时,如何让jetty作为
jetty:run forked
运行?这将为以后的执行保留变量集,这可能不是预期的。在我的情况下,jetty在运行WAR文件之前组装WAR文件的解决方案是一个问题。组装WAR文件时,插件似乎跳过了复制和打包Web资源时需要的“过滤步骤”。jetty:deploy war目标仅使用预构建的war文件,但不支持jvmArgs参数:-(设置MAVEN_OPTS env变量是可行的,但我必须为我构建的其他应用程序设置它。如果我可以通过插件配置设置JVM选项,并将该配置与需要它的应用程序保持在一起,那就太好了。在什么情况下可以工作?它是针对jetty的吗?对我来说,它不起作用,而设置MAVEN_OPT did.mvn-DargLine=“-Xmx1524m"clean install@cafebabe1991很高兴你对我的帖子发表评论,并突出显示错误(如果有)。不要认为有必要修改我的答案,因为这是我的答案!!不知道为什么Stackoverflow会允许修改别人的答案,因为你不喜欢-D标志的顺序。据我所知,顺序是不相关的t、 还原回原始答案。@christritchie如果我没记错的话-D没有被maven拾取,除非它是按照我指定的顺序。我同意我不应该编辑你的答案。
%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%