Maven:Maven属性值的概述

Abd*_*ull 33 maven-plugin maven-3

我想找出适用于某些Maven项目的所有 Maven属性的值.
mvn help:system列出OS环境变量和JVM系统属性,但没有Maven属性.
mvn help:evaluate仅在交互模式下工作,这意味着我必须键入单个Maven属性(例如${project.build.outputDirectory})以获取该属性的值.

我正在寻找一种方法来获取所有Maven属性及其值的完整列表.

Abd*_*ull 45

要解决此问题,请将其添加到<plugins> ... </plugins>项目内的部分pom.xml:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.7</version>
  <executions>
    <execution>
      <phase>validate</phase>
      <goals>
        <goal>run</goal>
      </goals>
      <configuration>
        <tasks>
          <echoproperties />
        </tasks>
      </configuration>
    </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

现在执行mvn validate.
在控制台上,前缀[echoproperties],会出现系统性能,包括那些由Maven的设置如的完整列表project.build.outputDirectory,basedir以及settings.localRepository.

  • 好主意,但它没有列出所有属性,例如它没有列出`$ {project.build.scriptSourceDirectory}` (3认同)

Lus*_*116 29

maven-help-plugin 可以做你想要的事情,只需调用它-Dexpression=project.properties即可打印有效 pom 的属性标签。

mvn help:evaluate -Dexpression=project.properties
Run Code Online (Sandbox Code Playgroud)

当您只想要属性输出而不是 Maven 输出时,奖励积分

mvn help:evaluate -Dexpression=project.properties -q -DforceStdout
Run Code Online (Sandbox Code Playgroud)

或使用显式版本,因为-DforceStdout自版本 3.1.0 起可用

mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.properties -q -DforceStdout
Run Code Online (Sandbox Code Playgroud)

  • IMO 这应该是公认的答案。它不需要对 pom 文件进行任何编辑,并且可以用于查看任何属性,例如 `-Dexpression=spring.version` (3认同)

小智 7

不确定是否有帮助,但我在尝试做同样的事情时发现了这一点:

mvn com.github.ekryd.echo-maven-plugin:echo-maven-plugin:echo -Decho.message='${project.build.testOutputDirectory}'
Run Code Online (Sandbox Code Playgroud)

这里

将以下内容添加到${user.home}/.m2/settings.xml

  <pluginGroups>
    <pluginGroup>com.github.ekryd.echo-maven-plugin</pluginGroup>
  </pluginGroups>
Run Code Online (Sandbox Code Playgroud)

该命令可以缩短为:

mvn echo:echo -Decho.message='${project.build.testOutputDirectory}'
Run Code Online (Sandbox Code Playgroud)