Maven project.build.directory


177

在Maven中,project.build.directory指的是什么?我有点困惑,它引用了Maven项目中的源代码目录还是目标目录?

Answers:


227

您可以在超级pom中找到这些maven属性。

您可以在这里找到罐子:

${M2_HOME}/lib/maven-model-builder-3.0.3.jar

用7-zip或其他存档程序打开jar(或使用jar工具)。

导航

org/apache/maven/model

在那里您会找到pom-4.0.0.xml

它包含所有这些“捷径”:

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

更新资料

经过一番游说之后,我将添加一个链接到pom-4.0.0.xml。这使您无需打开本地jar文件即可查看属性。


我建议使用在线参考,而不是存档到jar中的文件。这:maven.apache.org/ref/3.0.3/maven-model/maven.html
khmarbaise

18
@khmarbaise很好,但是它没有显示project.build.directory例如的默认值。那就是我想展示的。
maba 2012年


@MartinEllis好,我也通过链接更新了我的答案。谢谢!
maba 2012年

我在github.com/apache/maven搜索了Maven回购的源代码。命中次数相对较少(9)。没有任何东西直接设置该属性。它必须放在某个地方!此URL显示在搜索结果我看到:github.com/apache/maven/...
PATS

48

它指向您的顶级输出目录(默认为target):

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

编辑:正如已经指出的那样,Codehaus现在已不复存在。您可以从Sonatype找到有关这些属性的详细信息:

http://books.sonatype.com/mvnref-book/reference/resource-filtering-sect-properties.html#resource-filtering-sect-project-properties

如果您试图在Maven中引用输出目录,则永远不要使用目标/类之类的文字值。相反,您应该使用属性引用来引用这些目录。

    project.build.sourceDirectory
    project.build.scriptSourceDirectory
    project.build.testSourceDirectory
    project.build.outputDirectory
    project.build.testOutputDirectory
    project.build.directory

sourceDirectory,,scriptSourceDirectorytestSourceDirectory提供对项目源目录的访问。outputDirectorytestOutputDirectory提供对Maven将放置字节码或其他构建输出的目录的访问。directory是指包含所有这些输出目录的目录。


1
codehause.org托管已终止,此链接不再起作用。
Bartosz Firyn 2015年

是的,真实而悲伤。我已经更新了工作链接,并引用了链接页面的相关部分。
sdouglass

7
...因此project.base.dir指向pom.xml所在项目的根目录。这就是为什么在此之后,project.build.directoryMaven定义为${project.basedir}/target。谢谢大家,我不知道这一点。
evaldeslacasa

1
尽管似乎是正确的,但是您如何获得此信息的:“ project.base.dir指向pom.xml所在项目的根目录”。在哪里可以看到此定义?
卡塔尔

3
假设您的项目称为project-A,并且在project-A下声明了pom.xml,然后${project.build.sourceDirectory}指向project-A/src/main/java${project.build.scriptSourceDirectory}指向project-A/src/main/scripts${project.build.testSourceDirectory}指向project-A/src/test/java${project.build.directory}指向project-A/target${project.build.directory}指向project-A/target/classes${project.build.testOutputDirectory}指向project-A/target/test-classes
sc30

5

您只需执行以下操作,即可找到项目中值的最新答案。

mvn3 help:effective-pom

命令并<build> ... <directory>在有效pom中的结果中找到标签的值。除非您已覆盖,否则它将显示超级POM的值。


0

除了@VerhásIstván答案(我喜欢)之外,我还希望这个问题可以一线解决:

${project.reporting.outputDirectory}解决target/site在您的项目中。

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.