【问题标题】:How to print the actual MAVEN_OPTS that are being used?如何打印正在使用的实际 MAVEN_OPTS?
【发布时间】:2010-07-02 16:11:25
【问题描述】:

有没有办法让 maven 在构建期间输出环境和 maven 变量的值?这对于在出错时进行调试非常有用。

【问题讨论】:

标签: maven environment-variables


【解决方案1】:

您可以使用Maven Help Pluginhelp:system 目标,因此您的pom 将是:

<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

【讨论】:

  • 它列出了所有的环境变量,所以如果你没有看到 MAVEN_OPTIONS 那么它们没有在你的环境中设置。还是你的意思是别的?
  • 这可行,但环境变量的名称是 MAVEN_OPTS 而不是 MAVEN_OPTIONSMAVEN_OPT。如果它不存在,那么您的构建正在使用默认值 javac 使用。
【解决方案2】:

这需要对 pom.xml 进行一些更改。

<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

【讨论】:

  • 嗨,sblundy,我尝试了您建议的方式,但没有打印任何内容(甚至没有“[MAVEN_OPTIONS]”。Here我粘贴了整个输出和 pom.xml ...我认为 'echo $MAVEN_OPT' 可能无法告诉 maven 真正看到了什么,因为通常不止一个地方可以用来定义这些设置(即 .mavenrc)。我发现问 maven “你实际看到了什么选项很方便?”谢谢
【解决方案3】:

使用-X--debug 选项运行您的maven

命令行示例:

mvn clean compile --debug

您会在控制台上看到环境信息。

【讨论】:

    【解决方案4】:

    在 pom.xml 的 plugins 部分下添加这个插件并使用 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>
    

    这将打印您的环境变量值。

    【讨论】:

      【解决方案5】:

      为已经提供的答案添加一个选项。

      根据https://maven.apache.org/configure.html,有多种方法可以将 JVM 选项传递给 mvn,您可以使用环境变量 (MAVEN_OPTS) 或文件 (${maven.projectBasedir}/.mvn/jvm.config) 来实现。

      我想看看哪个被拾取,并且通过开始构建然后跟随一个 ps 列表来断言拾取了什么,例如

      ps -ef | grep SomeOption
      

      【讨论】:

        猜你喜欢
        • 2020-06-11
        • 1970-01-01
        • 2012-02-04
        • 2022-01-24
        • 1970-01-01
        • 2021-02-14
        • 2015-10-06
        • 2011-07-18
        • 1970-01-01
        相关资源
        最近更新 更多