Как управлять аргументами виртуальной машины для maven-jetty-plugin?

Как установить аргументы виртуальной машины для запуска Jetty из плагина maven-jetty?

Например, мне нужно передать -Xmx аргументы в Jetty, запущенную командой mvn jetty:run.


person Michal Bernhard    schedule 05.01.2010    source источник
comment
Я знаю, что этот вопрос действительно старый, но вы нашли решение? (Я имею в виду, что не нужно добавлять аргумент для всей JVM, а только для пристани) Я думаю, что Cargo поможет, но мне не хочется добавлять что-то еще в свой проект ...   -  person Depado    schedule 21.05.2012
comment
Да, используйте -DargLine ... полный пример см. В моем ответе ниже   -  person Chris Ritchie    schedule 25.05.2015
comment
-DargLine не работает с причалом: беги, он работает с причалом: беги-вилки   -  person Gordon    schedule 01.01.2018


Ответы (9)


Переменная среды MAVEN_OPTS является ответом. Строковое содержимое MAVEN_OPTS передается в JVM (java.exe).

  • Linux: в оболочке типа export MAVEN_OPTS=....
  • Windows: в оболочке (cmd.exe) введите set MAVEN_OPTS=...

Например: в Windows set MAVEN_OPTS="-Xmx1024m" устанавливает размер кучи процесса Maven равным 1024 МБ.

Обновление (01.04.2013): передать его прямо в Jetty.

Мэтью Фарвелл (проголосуйте за его ответ, чтобы отдать ему должное) предлагает решение использования разветвленного процесса JVM для запуска Jetty, которое является < a href = "http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html#jetty-run-forked-goal" rel = "noreferrer"> новая функция плагина Jetty < / а>. Это лучшее решение, поскольку первое работает внутри того же процесса JVM, что и Maven (таким образом, разделяет память).

person Michal Bernhard    schedule 05.01.2010
comment
Разве это не установило бы его для всего запуска JVM? Есть ли способ заставить его просто повлиять на причал, с которого он запускается? - person BeepDog; 08.09.2011
comment
да, это так - посмотрите (и проголосуйте за) новый ответ от Мэтью Фарвелла - есть новая функция плагина причала для запуска причала в отдельном jvm с собственными аргументами - person Michal Bernhard; 01.04.2013

В более поздних версиях maven-jetty-plugin вы можете использовать mvn:run-forked. Параметр jvmArgs позволит вам установить -Xmx и т. Д.

Для получения дополнительной информации см .: jetty: run-forassemble webapp в отдельном jvm.

Я думаю, что исходная проблема заключалась в запуске Jetty в отдельной JVM.

person Matthew Farwell    schedule 14.11.2012
comment
Решения, в которых Jetty собирает файл WAR перед его запуском, в моем случае являются проблемой. При сборке файла WAR плагин пропускает «шаги фильтрации», которые мне нужны при копировании и упаковке веб-ресурсов. Цель jetty: deploy-war просто использует предварительно созданный файл WAR, но не поддерживает параметр jvmArgs. :-( Установка переменной env MAVEN_OPTS работает, но мне нужно вернуть ее для других приложений, которые я создаю. Было бы неплохо, если бы я мог установить параметры JVM через конфигурацию плагина, сохранив эту конфигурацию с приложением, которое в ней нуждается. - person Jack Straw; 29.01.2016

Похоже, ваш текущий подход правильный - при запуске причала через maven, пристань - это поток внутри процесса maven. Таким образом, увеличение кучи maven увеличит кучу причала.

Как вы устанавливаете MAVEN_OPTS?

Я нашел один пример, который выглядит так: MAVEN_OPTS='-Xmx256m -Xms10m' mvn clean jetty:run

Обратите внимание, что MAVEN_OPTS - это переменная среды здесь, а не передается JVM (кто не знает, что с ней делать).

person danben    schedule 05.01.2010

Чтобы указать аргументы vm через командную строку (как изначально было предложено), вы можете сделать следующее:

mvn clean install -DargLine="-Xmx1524m" 
person Chris Ritchie    schedule 25.05.2015
comment
При каких обстоятельствах это работает? Это характерно для пристани? Для меня это не сработало, а установка MAVEN_OPT сработала. - person glaed; 28.01.2017
comment
mvn -DargLine = -Xmx1524m clean install ‹----- Это должно работать нормально. - person cafebabe1991; 24.08.2019
comment
@ cafebabe1991 Рада, что вы прокомментируете мой пост и выделите ошибки, если они есть. Не думаю, что нужно изменять мой ответ, так как это мой ответ !! Понятия не имею, почему Stackoverflow разрешает изменение чьего-либо ответа, потому что вам не нравится порядок, в котором идет флаг -D. Насколько мне известно, порядок не имеет значения. Вернулся к исходному ответу. - person Chris Ritchie; 02.09.2019
comment
@ChrisRitchie: Если я правильно помню, -D ‹param› не был получен maven, если он не находится в указанном мной порядке. Я согласен с тем, что мне не следовало редактировать ваш ответ. - person cafebabe1991; 03.09.2019


В Linux / Unix

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

сделает трюк

person Gonzalo Gómez García    schedule 23.04.2012
comment
Это оставляет переменную установленной для более поздних запусков, которые могут быть не предназначены. - person Raúl Salinas-Monteagudo; 28.05.2013

Плагин позволяет указать 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>
person doredson    schedule 02.12.2012
comment
у меня не сработало, я попробовал: ‹plugin› ‹groupId› org.mortbay.jetty ‹/groupId› ‹artifactId› jetty-maven-plugin ‹/artifactId› ‹version› 8.1.5.v20120716/version› ‹конфигурация ›‹JvmArgs› -Xmx2048M -XX: MaxPermSize = 2048m ‹/jvmArgs› ‹webAppSourceDirectory› $ {project.basedir} / war ‹/webAppSourceDirectory› ‹webAppConfig› ‹descriptor› $ {project.basedir} / war / WEB-INF-INF. web.xml ‹/descriptor› ‹/webAppConfig› ‹/configuration› ‹/plugin› - person davidjnelson; 17.01.2013
comment
@davidjnelson Вам нужно использовать jetty:run-forked цель. См. Ответ Мэтью Фарвелла выше: stackoverflow.com/a/13388081/19501. - person amit; 18.10.2013
comment
Но как заставить причал работать как jetty:run-forked, когда набираемая команда mvn clean install? - person Stephane; 18.12.2015

вы можете использовать для передачи аргумента -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>
person user2663609    schedule 14.03.2014

Нет возможности использовать командную строку. Но вы можете скопировать 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%
person Grim    schedule 21.08.2016