【发布时间】:2011-05-23 12:19:24
【问题描述】:
我知道有一个所有预定义 Maven 属性的列表(你知道像 project.build.sourceEncoding 或 project.build.sourceDirectory)。我曾经看过清单,但我再也找不到了。
【问题讨论】:
标签: maven
我知道有一个所有预定义 Maven 属性的列表(你知道像 project.build.sourceEncoding 或 project.build.sourceDirectory)。我曾经看过清单,但我再也找不到了。
【问题讨论】:
标签: maven
【讨论】:
${...})提供选项来提供很大帮助
[WARNING] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead. 这样的“一切”,但包括大多数;)
【讨论】:
查看“有效的 POM”可能也会有所帮助。例如,如果您想知道${project.build.sourceDirectory} 的路径是什么
您会在有效的 POM 中找到相关的 XML,例如:
<project>
<build>
<sourceDirectory>/my/path</sourceDirectory>
也很有帮助 - 您可以在与 POM 相同的目录中通过命令行执行 mvn help:evaluate 对属性进行实时评估。
【讨论】:
我认为最好的查看位置是Super 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
(要引用资源目录,请参阅this stackoverflow question)
<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 Users mailing list 上提问并得到了一些最新的答案。
我想说,我上面的链接中包含的最好(也是最权威)的答案是 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>
【讨论】: