Как управлять аргументами VM для maven-jetty-plugin?
Как установить аргументы VM для запуска Jetty из maven-jetty-plugin?
Например, мне нужно пройти -Xmx
Аргументы в пользу Причала mvn jetty:run
команда.
11 ответов
Переменная среды MAVEN_OPTS является ответом. Содержимое строки MAVEN_OPTS передается в JVM (java.exe).
- Linux: в типе оболочки
export MAVEN_OPTS=....
- Windows: в оболочке (cmd.exe) типа
set MAVEN_OPTS=...
Например: в Windows set MAVEN_OPTS="-Xmx1024m"
устанавливает размер кучи процесса Maven равным 1024mb.
Обновление (01.04.2013): передать его непосредственно на причал.
Мэтью Фарвелл (пожалуйста, подтвердите его ответ, чтобы выразить ему свою благодарность) предлагает решение использовать раздвоенный процесс JVM для запуска Jetty, который является новой функцией плагина Jetty. Это лучшее решение, поскольку первый работает внутри того же процесса JVM, что и Maven (таким образом, разделяет память).
С более свежими версиями maven-jetty-plugin вы можете использовать mvn:run-forked
, Опция jvmArgs позволит вам установить -Xmx и т. Д.
Для получения дополнительной информации см.: jetty: run-forked: Запуск разобранного веб-приложения в отдельном jvm.
Я думаю, что оригинальной проблемой был Запуск 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 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 &
В 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>
Как указано в разделе «Настройка Apache Maven» при обсуждении переменной среды, на которую ссылаются в других ответах, вы также можете управлять конфигурацией проекта с помощью файлов в.mvn
каталог.
В частности, для аргументов VM вы можете добавить
.mvn/jvm.config
файл , содержащий связанные параметры:
Начиная с Maven 3.3.1+, вы можете определить конфигурацию JVM через
${maven.projectBasedir}/.mvn/jvm.config
файл, что означает, что вы можете определить параметры своей сборки для каждого проекта. Этот файл станет частью вашего проекта и будет возвращен вместе с вашим проектом. Так что больше не нужноMAVEN_OPTS
,.mavenrc
файлы.
Вы можете использовать для передачи аргумента -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%
к
%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%