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

Mar*_*tin 117 maven

我知道有一个所有预定义Maven属性的列表(你知道project.build.sourceEncoding,或者project.build.sourceDirectory).我曾经看过这个清单,但我再也找不到了.

fre*_*asy 123

你是说这个吗?

https://web.archive.org/web/20150520200505/https://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide

我还将其内容移至GitHub仓库:

https://github.com/cko/predefined_maven_properties/blob/master/README.md

  • Internet Archive仍然具有CodeHaus链接:https://web.archive.org/web/20150520200505/https://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide (16认同)
  • Codehaus现在已经死了.有人有新链接吗? (6认同)
  • 另请查看 Maven wiki 中的此页面:https://cwiki.apache.org/confluence/display/MAVEN/Maven+Properties+Guide (2认同)
  • 不包括“所有内容”,如 `[警告] 表达式 ${artifactId} 已弃用。请使用 ${project.artifactId} 代替。`但包括大多数;) (2认同)

Mic*_*ord 23

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

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

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


Ste*_*art 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>
Run Code Online (Sandbox Code Playgroud)


Ste*_*hen 5

我已经厌倦了看到这个页面的现在过时引用已经解散的Codehaus页面,所以我在Maven用户邮件列表上询问并获得了一些更新的答案.

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

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

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

  • 这个问题要求链接,所以我认为你的担忧是错误的.这个问题不是问"我怎么做X"而是"我在哪里可以找到X". (3认同)
  • 哎呀,你说得对 - 这个问题不适合这个网站 :-) 感谢提醒 - 投票结束 (2认同)
  • 我有时不理解规则.这是一个非常有效的问题,人们过去非常愿意回答这个问题.作为这种规则的坚持者,Stack Overflow切断了它的鼻子以惹恼它的脸. (2认同)

Ste*_*ers 5

此链接显示如何列出所有活动属性: 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>
Run Code Online (Sandbox Code Playgroud)