У Мейвені про що 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, якщо ви не перезаписали.