Maven project.build.directory

时间:2012-11-13 01:47:56

标签: maven

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

4 个答案:

答案 0 :(得分:207)

你可以在超级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>

更新

经过一番游说,我正在添加link to the pom-4.0.0.xml。这允许您在不打开本地jar文件的情况下查看属性。

答案 1 :(得分:39)

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

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中引用输出目录,则不应使用像target / classes这样的文字值。相反,您应该使用属性引用来引用这些目录。

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

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

答案 2 :(得分:2)

您可以在项目中找到最新的答案,只需执行

即可
mvn3 help:effective-pom

命令并在有效-pom中的结果中找到<build> ... <directory>标记的值。它会显示超级POM的值,除非你被覆盖。

答案 3 :(得分:1)

除了@VerhásIstván答案(我喜欢)之外,我还希望该问题有一个内线:

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