Maven project.build.directory

前端 未结 4 1311
眼角桃花
眼角桃花 2020-12-07 07:48

In Maven, what does the project.build.directory refer to? I am a bit confused, does it reference the source code directory or the target directory in the Maven

相关标签:
4条回答
  • 2020-12-07 07:53

    You can find those maven properties in the super pom.

    You find the jar here:

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

    Open the jar with 7-zip or some other archiver (or use the jar tool).

    Navigate to

    org/apache/maven/model
    

    There you'll find the pom-4.0.0.xml.

    It contains all those "short cuts":

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

    Update

    After some lobbying I am adding a link to the pom-4.0.0.xml. This allows you to see the properties without opening up the local jar file.

    0 讨论(0)
  • 2020-12-07 08:00

    It points to your top level output directory (which by default is target):

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

    EDIT: As has been pointed out, Codehaus is now sadly defunct. You can find details about these properties from Sonatype here:

    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.

    0 讨论(0)
  • 2020-12-07 08:00

    Aside from @Verhás István answer (which I like), I was expecting a one-liner for the question:

    ${project.reporting.outputDirectory} resolves to target/site in your project.

    0 讨论(0)
  • 2020-12-07 08:11

    You can find the most up to date answer for the value in your project just execute the

    mvn3 help:effective-pom
    

    command and find the <build> ... <directory> tag's value in the result aka in the effective-pom. It will show the value of the Super POM unless you have overwritten.

    0 讨论(0)
提交回复
热议问题