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


125

我知道这里有所有预定义的Maven属性的列表(您知道像project.build.sourceEncodingproject.build.sourceDirectory)。我曾经看到过该列表,但只是找不到了。

Answers:


132

1
通常,当您在Intellij IDEA中编辑pom.xml时,它会为看起来像Maven属性的任何事物提供选项(例如${...}
Kedar Mhaswade

mvn help:effective-pom是发现可用属性的绝佳工具。 maven.apache.org/plugins/maven-help-plugin/...
彼得·卡恩

1
还可以在Maven Wiki中查看此页面:cwiki.apache.org/confluence/display/MAVEN/…–
Guss

不包括“一切”,[WARNING] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead.但包括大多数;)
rogerdpack


26

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

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

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


似乎有些来自XML树,有些来自“仅是普通属性” FWIW ...
rogerdpack

11

我认为最好看的地方是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

(要引用资源目录,请参阅此stackoverflow问题


<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>

6

我已经厌倦了看到此页面,其中包含已经失效的Codehaus页面的过时引用,因此我在Maven用户邮件列表中询问并获得了更多最新答案。

我想说的是,我上面的链接中包含的最好的(也是最权威的)答案是HervéBOUTEMY做出的贡献:

这是核心参考:http : //maven.apache.org/ref/3-LATEST/maven-model-builder/

它没有解释可以在POM或设置中找到的所有内容,因为有太多可用信息,但它指向POM和设置描述符,并解释了不是POM或设置的所有内容


3
这个问题要求一个链接,所以我认为您的关注点放错了地方。这个问题不是问“我怎么做X”,而是“我在哪里可以找到X”。
史蒂夫·科恩

2
哎呀,你是正确的-这是不适合这个网站的问题:-)感谢抬起头-投票决定关闭
克列奥帕特拉

1
但是,正如我在邮件列表中收到的许多答案中所承认的那样,这个问题一遍又一遍地提出来。要点是,Maven对这一方面的记录不够清楚。在他们的网站上应该有一个显眼的页面来显示此类信息,而没有。即使从这些链接中也不清楚,是否可以将POM引用或提及的其他位置的任何元素转换为$ {dotted.notation}表达式并在POM文件中使用。因此,该问题有一个有用的目的,如果再次移动,则需要对其进行更新。
史蒂夫·科恩

1
要求外部资源不在本网站的范围之内,如果所有规则都将发挥作用,那么X的问题就没有了;-)
kleopatra 2015年

3
我有时不明白规则。这是一个完全正确的问题,过去人们一直乐于回答。通过成为此类规则的坚持者,Stack Overflow切断了其鼻子,以掩盖其脸庞。
史蒂夫·科恩

3

该链接显示了如何列出所有活动属性: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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.