Как распечатать фактические MAVEN_OPTIONS, которые используются?

Есть ли способ заставить maven выводить значение переменных среды и maven во время сборки? Это было бы очень полезно для отладки вещей, когда они идут не так.

3 ответа

Вы можете использовать Maven Help Plugin и help:system цель, так что ваш пом будет:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>testMavenOpt</groupId>
    <artifactId>testMavenOpt</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>testMavenOpt</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-help-plugin</artifactId>
                <version>2.1</version>
            </plugin>
        </plugins>
    </build>
</project>

и вы должны выполнить mvn help:system

Это потребует некоторых изменений в пом.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.1</version>
  <executions>
    <execution>
      <phase>validate</phase>
      <goals>
        <goal>run</goal>
      </goals>
      <configuration>
        <tasks>
          <echo>[MAVEN_OPTIONS]${env.MAVEN_OPTIONS}</echo>
        </tasks>
      </configuration>
    </execution>
  </executions>
</plugin>

Конечно, это может быть проще всего запустить

echo $MAVEN_OPTS

Запусти своего мавена с -X или же --debug опции

Пример командной строки:

mvn clean compile --debug

Вы увидите информацию об окружающей среде на своей консоли.

Добавьте этот плагин в разделе плагинов в pom.xml и используйте mvn validate:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.1</version>
  <executions>
    <execution>
      <phase>validate</phase>
      <goals>
        <goal>run</goal>
      </goals>
      <configuration>
        <tasks>
          <echo>Displaying value of system variables</echo>
          <echo> ${env.YOUR_ENVIRONMENT_VARIABLE_NAME}</echo>
        </tasks>
      </configuration>
    </execution>
  </executions>
</plugin>

Это напечатает ваше значение переменной env.

Добавление опции к уже предоставленным ответам.

Существуют различные способы передачи параметров JVM в mvn согласно https://maven.apache.org/configure.html, вы можете сделать это с помощью переменной среды (MAVEN_OPTS) или файл (${maven.projectBasedir}/.mvn/jvm.config).

Я хотел увидеть, что было подобрано, и сделал это, запустив сборку, а затем следил за листингом ps, чтобы подтвердить, что было подобрано, например

ps -ef | grep SomeOption
Другие вопросы по тегам