预定义的 Maven 属性列表在哪里

我知道有一个所有预定义 Maven 属性的列表(如 project.build.sourceEncodingproject.build.sourceDirectory)。我曾经看过那份名单,但是我再也找不到了。

142940 次浏览

看看“有效的 POM”可能也会有所帮助。例如,如果您想知道 ${project.build.sourceDirectory}的路径是什么

您可以在有效的 POM 中找到相关的 XML,例如: <project> <build> <sourceDirectory>/my/path</sourceDirectory>

还有一点很有帮助——您可以通过命令行执行 mvn help:evaluate来实时评估属性,同时在与 POM 相同的目录中。

我觉得最好的地方是 超级 POM

例如,在编写本文时,链接引用显示了第32-48行之间的一些属性。

对此的解释是遵循 XPath 作为 .分隔属性。

例如:

${project.build.testOutputDirectory} = = ${project.build.directory}/test-classes

还有:

${project.build.directory} = = ${project.basedir}/target

因此,将它们结合起来,我们发现:

${project.build.testOutputDirectory} = = ${project.basedir}/target/test-classes

(要引用资源目录,请参见 这个堆栈溢出的问题)


<project>
<modelVersion>4.0.0</modelVersion>
.
.
.
<build>
<directory>${project.basedir}/target</directory>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
<finalName>${project.artifactId}-${project.version}</finalName>
<testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
.
.
.
</build>
.
.
.
</project>

我已经厌倦了看到这个页面,其现在已经过时的参考到不存在的 Codehaus 页面,所以我在 Maven 用户邮件列表上问,并得到了一些更新的答案。

我想说,在我上面的链接中包含的最好(也是最权威)的答案是由 Hervé BOUTEMY 提供的:

以下是核心参考文献: Http://maven.apache.org/ref/3-latest/maven-model-builder/

它不能解释在 POM 或设置中可以找到的所有东西, 因为有这么多可用的信息,但它指向 POM 和 设置描述符,并解释非 POM 或 设定

此链接显示如何列出所有活动属性: Http://skillshared.blogspot.co.uk/2012/11/how-to-list-down-all-maven-available.html

总之,在 POM 中添加以下插件定义,然后运行 mvn install:

<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>install</phase>
<configuration>
<target>
<echoproperties />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>

这些答案大多提供旧的链接,依赖于非权威的书籍,或参考某人的个人收藏。甚至在一个答案中引用的 http://maven.apache.org/ref/3-LATEST/maven-model-builder/也不包含完整的列表。例如,尝试在页面中搜索 project.build.directory

不幸的是,似乎没有权威的声明列表,但我相信有一个 程序访问的权威文档: org.apache.maven.model.Model的 API 引用。例如,发现和/或了解 project.build.directory:

  1. Model.getBuild()
  2. Build
  3. Build.getDirectory()

获取生成生成的所有文件所在的目录。默认值为 target

Maven Model Maven 项目描述符也很有用。

如果有时间,他们可以通过编程方式遍历最小的 org.apache.maven.model.Model,至少可以发现默认属性并生成一些 HTML/Markdown 参考页面。(我意识到在基于项目的构建时,动态模型将是唯一的。)