Maven project.build.directory

В Maven, к чему относится project.build.directory? Я немного смущен, ссылается ли он на каталог исходного кода или целевой каталог в проекте Maven?

Ответ 1

Вы можете найти те свойства maven в супер pom.

Здесь вы найдете банку:

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

Откройте банку с помощью 7-zip или другого архиватора (или используйте инструмент 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>

Update

После некоторого лоббирования я добавляю ссылку в pom-4.0.0.xml. Это позволяет вам видеть свойства, не открывая локальный файл jar.

Ответ 2

Он указывает на ваш выходной каталог верхнего уровня (который по умолчанию является "target" ):

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 собирается вывести байт-код или другой вывод сборки. каталог относится к каталогу, который содержит все эти выходные каталоги.

Ответ 3

Вы можете найти самый актуальный ответ для значения в вашем проекте, просто выполните

mvn3 help:effective-pom

и найдите значение тега <build> ... <directory> в результате aka в эффективном pom. Он покажет значение Super POM, если вы не перезаписали.