Maven project.build.directory


172

У Мейвені про що project.build.directoryйдеться? Я трохи розгублений, чи посилається він на каталог вихідного коду або на цільовий каталог у проекті Maven?

Відповіді:


224

Ви можете знайти ці властивості Maven у супер пом.

Ви можете знайти тут баночку:

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

Відкрийте банку з 7-блискавкою чи іншим архіватором (або скористайтеся інструментом 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наприклад, значення за замовчуванням . Саме це я хотів показати.
маба

Дзеркало github дозволяє посилатися на певний номер рядка: github.com/apache/maven-3/blob/trunk/maven-model-builder/src/… Інакше він знаходиться у svn за адресою: svn.apache.org/repos/asf / maven / maven-3 / trunk /…
Мартін Елліс

@MartinEllis ОК, я також оновив свою відповідь за посиланням. Дякую!
маба

Я шукав джерело Maven repo на github.com/apache/maven . Порівняно невелика кількість звернень (9). Ніщо не встановлює цю властивість безпосередньо. Це треба десь встановити! Ця URL-адреса відображає результати пошуку, які я бачив: github.com/apache/maven/…
PatS

44

Він вказує на ваш вихідний каталог верхнього рівня (який за замовчуванням є target):

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

EDIT: Як вже було зазначено, 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, scriptSourceDirectoryта testSourceDirectoryзабезпечити доступ до вихідних каталогів проекту. outputDirectoryі testOutputDirectoryзабезпечити доступ до каталогів, куди Maven збирається поставити байт-код або інший вихід збірки. directoryПосилається на каталог, який містить усі ці вихідні каталоги.


1
Хостинг codehause.org припинено, і це посилання більше не працює.
Бартош Фірін

Так, правдиво і сумно. Я оновив робоче посилання та процитував відповідний розділ пов’язаної сторінки.
sdouglass

7
... так project.base.dirвказує на кореневий каталог проекту, де знаходиться pom.xml. Ось чому після цього, project.build.directoryвизначений Мейвен є ${project.basedir}/target. Спасибі, хлопці, я цього не знав.
evaldeslacasa

1
Хоча це здається правдою, але як ви отримали цю інформацію: "project.base.dir вказує на кореневий каталог проекту, де знаходиться pom.xml". Де я можу побачити це визначення?
квартал

2
припустимо, ваш проект називається project-A, а під проект-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

4

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

mvn3 help:effective-pom

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.