Как управлять аргументами 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файлы.

Как насчет: 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%

к

%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%
Другие вопросы по тегам