Как установить аргументы виртуальной машины для запуска Jetty из maven-jetty-plugin?
Например, мне нужно передать аргументы -Xmx
в Jetty, выполняемые командой mvn jetty:run
.
Как установить аргументы виртуальной машины для запуска Jetty из maven-jetty-plugin?
Например, мне нужно передать аргументы -Xmx
в Jetty, выполняемые командой mvn jetty:run
.
Переменная среды MAVEN_OPTS является ответом. Содержимое строки MAVEN_OPTS передается в JVM (java.exe).
export MAVEN_OPTS=....
set MAVEN_OPTS=...
Например: в Windows set MAVEN_OPTS="-Xmx1024m"
устанавливает размер кучи процесса Maven равным 1024 МБ.
Обновление (01.04.2013): передайте его непосредственно в Jetty.
Мэтью Фарвелл (пожалуйста, подтвердите его ответ, чтобы дать ему кредит) предлагает решение использовать раздвоенный процесс JVM для запуска Jetty, который является новой функцией плагина Jetty. Это лучшее решение, так как первый работает внутри того же процесса JVM, что и Maven (таким образом, разделяет память).
С более новыми версиями плагина maven-jetty вы можете использовать mvn:run-forked
. Параметр jvmArgs позволит вам установить -Xmx и т.д.
Для получения дополнительной информации см. jetty: run-forked: запуск незамонтированного webapp в отдельном jvm.
Я думаю, что исходная проблема была Starting Jetty в отдельной JVM.
Кажется, что ваш текущий подход верен - при запуске причала через maven причал - это поток внутри процесса maven. Таким образом, увеличение кучи maven увеличит кучу причала.
Как вы устанавливаете MAVEN_OPTS?
Один пример, который я нашел, выглядит следующим образом: MAVEN_OPTS='-Xmx256m -Xms10m' mvn clean jetty:run
Обратите внимание, что MAVEN_OPTS
здесь является переменной окружения и не передается JVM (кто не знает, что с ним делать).
Чтобы указать аргументы vm через командную строку (как было задано изначально), вы можете сделать следующее:
mvn clean install -DargLine="-Xmx1524m"
Параметр <jvmArgs>
, упомянутый здесь: Плагин Maven для причала
не работал у меня.
Версия 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
выполнит трюк
Плагин позволяет вам указать 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>
Как насчет: mvn -DMAVEN_OPTS=-Xmx1024m 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>
Невозможно использовать командную строку. Но вы можете скопировать 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%