其中是预定义的Maven属性列表

dwbf0jvd  于 2022-10-26  发布在  Maven
关注(0)|答案(7)|浏览(172)

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

t0ybt7op

t0ybt7op3#

看看“有效的POM”可能也会有所帮助。例如,如果您想知道${project.build.sourceDirectory}的路径是什么
您将在有效的POM中找到相关的XML,例如:<project><build><sourceDirectory>/my/path</sourceDirectory>
这也很有帮助--您可以在与POM相同的目录中通过命令行执行mvn help:evaluate对属性进行实时评估。

szqfcxe2

szqfcxe24#

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

voj3qocg5#

我厌倦了看到这个页面,其中包含了对已不存在的Codehaus页面的陈旧引用,所以我在Maven Users mailing list上询问了一下,得到了一些更新的答案。
我想说,我上面的链接中包含的最好(也是最权威的)答案是埃尔韦·布特米贡献的答案:
以下是核心参考:http://maven.apache.org/ref/3-LATEST/maven-model-builder/
它没有解释在POM或设置中可以找到的所有内容,因为有太多可用信息,但它指向POM和设置描述符,并解释POM或设置以外的所有内容

lkaoscv7

lkaoscv76#

此链接显示如何列出所有活动属性: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>
zlhcx6iw

zlhcx6iw7#

这些答案中的大多数都提供了旧链接,依赖于非权威书籍,或者参考了某人的个人收藏。即使在一个答案中引用的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()
1.Build
1.Build.getDirectory()
获取放置构建生成的所有文件的目录。默认值为target
Maven ModelMaven Project Descriptor也很有用。
如果有人有时间,他们可以通过编程方式遍历最小的org.apache.maven.model.Model,以至少发现默认属性并生成一些HTML/Markdown参考页面。(我意识到动态地,模型在基于项目的构建时将是唯一的。)

相关问题