У Мейвені про що project.build.directory
йдеться? Я трохи розгублений, чи посилається він на каталог вихідного коду або на цільовий каталог у проекті Maven?
У Мейвені про що project.build.directory
йдеться? Я трохи розгублений, чи посилається він на каталог вихідного коду або на цільовий каталог у проекті Maven?
Відповіді:
Ви можете знайти ці властивості 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.
project.build.directory
наприклад, значення за замовчуванням . Саме це я хотів показати.
Він вказує на ваш вихідний каталог верхнього рівня (який за замовчуванням є target
):
EDIT: Як вже було зазначено, Codehaus зараз сумно не існує. Детальну інформацію про ці властивості у Sonatype можна знайти тут:
Якщо ви коли-небудь намагаєтеся посилатися на вихідні каталоги в 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
Посилається на каталог, який містить усі ці вихідні каталоги.
project.base.dir
вказує на кореневий каталог проекту, де знаходиться pom.xml. Ось чому після цього, project.build.directory
визначений Мейвен є ${project.basedir}/target
. Спасибі, хлопці, я цього не знав.
${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
.
Ви можете знайти найсвіжішу відповідь на значення у вашому проекті просто виконати
mvn3 help:effective-pom
команду і знайдіть значення <build> ... <directory>
тегу в результаті aka в ефективні-pom. Він покаже значення Super POM, якщо ви не перезаписали.