Указание параметра памяти Maven без установки переменной окружения MAVEN_OPTS
Мне было интересно, можно ли указать границы памяти Maven с синтаксисом, подобным:
mvn -Dtest=FooTest -DXmx=512M clean test
Я пробовал пару вариантов до сих пор, безуспешно.
Я знаю переменную среды MAVEN_OPTS, но я бы хотел этого избежать.
В связи с указанным выше вопросом было бы неплохо узнать, есть ли возможность указать поведение памяти плагина surefire аналогичным образом, чтобы он вилки jvm с использованием переопределенного количество памяти (в конечном счете, переопределение параметра <argLine>
в конфигурации плагина pom, если присутствует)
Ответы
Ответ 1
Вы можете настроить плагин surefire для использования большего объема памяти. Взгляните на
Ошибка Strange Maven из памяти.
Обновление:
Если вы хотите установить параметр из командной строки, посмотрите на {{mvn.bat}} (или {{mvn}} shell script) в каталоге установки maven. Он использует дополнительные параметры, указанные в командной строке.
Следующая возможность - установить верный плагин и использовать свойства, указанные в командной строке, например. mvn ... -Dram=512
и
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<forkMode>once</forkMode>
<argLine>-Xms${ram}m -Xmx${ram}m</argLine>
</configuration>
</plugin>
Ответ 2
Чтобы указать максимальную память (не через MAVEN_OPTS, как изначально запрошено), вы можете сделать следующее:
mvn clean install -DargLine="-Xmx1524m"
Ответ 3
Так как Maven 3.3.1 по умолчанию также можно указать в ${maven.projectBasedir}/.mvn/jvm.config
Здесь описано: https://maven.apache.org/docs/3.3.1/release-notes.html#JVM_and_Command_Line_Options