2016-01-12 10 views
5

Как я могу найти, какие Java-опции (Xmx, Xms, Xss и т. Д.) Используются Maven?Найти варианты Java, используемые Maven

Я узнал, что способ установлен их через окружающую среду MAVEN_OPTS. Теперь я хочу, чтобы быть уверенным, что он получает правильные настройки.

EDIT: Я считаю, что это отличается от this question, так как я не хочу видеть значение переменной окружения. Я предпочитаю видеть, какие настройки на самом деле используются Maven, независимо от того, происходит ли это из env var, settings.xml или других средств.

EDIT2: Я также заинтересован в других способах настройки параметров Java для Maven построить

+0

Возможный дубликат [Как распечатать фактические MAVEN \ _OPTIONS, которые используются?] (Http://stackoverflow.com/questions/3167364/how-to-print-the-actual-maven-options-that- используются) – Tunaki

+0

Вас интересует только то, как проверить, какие опции Maven используются, а также другими способами настроек - одни и те же параметры? –

+0

да Я также заинтересован в других путях, спасибо – Vituel

ответ

0

Могут быть, это помогает начать Maven с подробным выводом отладки (-debug, я думаю?). В противном случае просто сделайте ps aux | grep java и проверьте аргументы процесса (предполагая * nix).

8

Вы можете установить параметры Java для Maven в различных точках и уровня (глобально или с помощью конфигурации плагинов):

конфигурации плагина: только для компиляции
Использование конфигурации Maven Compiler Plugin для компиляции кода приложений и тестирования кода, вы можете установить необходимые параметры Xmx, Xms, Xss через запись конфигурации compileArgs, доступную как для compile, так и для testCompile целей. Официальный пример доступен here и на других ответах SO, таких как this one.
Пример также показан ниже на третьей точке.

конфигурация плагина: только для выполнения тестов
Использования конфигурации Maven Surefire Plugin для испытаний казней, вы можете установить необходимые параметры Java, которые будут использоваться во время выполнения с помощью записи в argLine конфигурационной test цели. Официальный пример доступен here.
Пример также показан ниже на третьей точке.

конфигурации плагина: с помощью свойств (и профили)
Вы можете объединить эти два варианта выше (в случае общих опций Java) в качестве значения свойства для передачи как запись конфигурации compileArgs и argLine или имеют различные свойства за конфигурации (в соответствии с вашими потребностями).

<property> 
     <jvm.options>-Xmx256M</jvm.options> 
</property> 

[...] 
<build> 
    [...] 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.3</version> 
     <compilerArgs> 
      <arg>${jvm.options}</arg> 
     </compilerArgs> 
    </plugin> 

    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.19.1</version> 
     <configuration> 
      <argLine>${jvm.options}</argLine> 
     </configuration> 
    </plugin> 
    </plugins> 
    [...] 
</build> 
[...] 

Использование свойств дает вам также два дополнительных преимущества (на верхней части централизации): вы можете использовать profiles затем настроить его на основе различных желанных поведения (и, например, в this SO answer), и вы можете изменить их с помощью командной строки а также, как:

mvn clean install -Djvm.options=-Xmx512 

конфигурации Global/Project: параметры файла
поскольку Maven 3.3.1, вы можете specify параметры в файле .mvn/jvm.config за проект. Это альтернатива MAVEN_OPTS и более суженная область (по проекту). Однако, поскольку это новая функция Maven, люди должны знать об этом, иначе могут быть затронуты устранение неполадок и техническое обслуживание.

конфигурация Global/ко: MAVEN_OPTS
Maven переменных окружений well-known установить глобальные параметры выполнения, однако применяется ко всему Maven сборок обмена, что окружающая среда (т.е. на вход пользователя).

При запуске Maven с использованием -X опции (отладка включена), вы будете иметь следующий вывод как часть вашей сборки:

[DEBUG] properties used {java.vendor=Oracle Corporation, ... , env.MAVEN_OPTS=-Xmx256M, ... 

Update
В конце концов, выполненная mvn команды это сценарий ОС. Посмотрев на него в Windows, я нашел возможность использовать опцию MAVEN_BATCH_ECHO, которая, если она включена (значение, установленное на on), будет эхом выполнять любую команду, выполняемую скриптом, и как таковую также вызов команды java, где вы можете проверьте, правильно ли выбраны ваши параметры (MAVEN_OPTS) вместе с полным списком параметров, переданных ему.

Вот исполнение я тестировал на Windows:

set MAVEN_BATCH_ECHO=on 
set MAVEN_OPTS=-Xmx256M 
mvn compile > output.txt 

ПРИМЕЧАНИЯ: output.txt будет содержать довольно много текста, обеспечивая результат сборки и дополнительные echo сек расстрелов. В рамках этого, он обеспечивает:

>"path_to_\jdk1.7\bin\java.exe" -Xmx256M -classpath "path_to\apache-maven-3.1.1\bin\..\boot\plexus-classworlds-2.5.1.jar" "-Dclassworlds.conf=path_to\apache-maven-3.1.1\bin\..\bin\m2.conf" "-Dmaven.home=path_to\apache-maven-3.1.1\bin\.." org.codehaus.plexus.classworlds.launcher.Launcher compile 

Как вы можете видеть, вариант -Xmx256M был подобран правильно. Если сценарий maven для другой ОС не предоставляет эту опцию, то вы можете просто добавить его в скрипт (простое echo перед выполнением java, показывая команду, также будет достаточно).
Вы можете найти скрипт maven в папке установки maven под подпапкой bin.


Update2
Кроме того, поскольку Maven является инструментом Java после того, как все, и как вы можете видеть из своего сценария он вызывает команду Java, вы можете увидеть все возможные варианты, как предложено в этом SO answer слегка изменение сценария Maven и использование команды jinfo, которая должна действительно дать вам ответ в соответствии с этим другим SO answer.