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


当前回答

您可以在super 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文件的情况下查看属性。

其他回答

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

mvn3 help:effective-pom

命令并找到<build>…<directory>标签在结果中的值,也就是在effective-pom中。它将显示Super POM的值,除非您已覆盖。

除了@Verhás István的答案(我喜欢),我还期待这个问题的一句话:

$ {project.reporting。outputDirectory}解析为项目中的目标/站点。

您可以在super 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文件的情况下查看属性。

它指向你的顶级输出目录(默认为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

If you are ever trying to reference output directories in Maven, you should never use a literal value like target/classes. Instead you should use property references to refer to these directories. project.build.sourceDirectory project.build.scriptSourceDirectory project.build.testSourceDirectory project.build.outputDirectory project.build.testOutputDirectory project.build.directory sourceDirectory, scriptSourceDirectory, and testSourceDirectory provide access to the source directories for the project. outputDirectory and testOutputDirectory provide access to the directories where Maven is going to put bytecode or other build output. directory refers to the directory which contains all of these output directories.