В Maven, что project.build.directory
относится к? Я немного запутался, он ссылается на каталог исходного кода или целевой каталог в проекте Maven?
В Maven, что project.build.directory
относится к? Я немного запутался, он ссылается на каталог исходного кода или целевой каталог в проекте Maven?
Ответы:
Вы можете найти эти свойства в супер-помпе.
Вы найдете банку здесь:
${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>
После некоторого лоббирования я добавляю ссылку наpom-4.0.0.xml
. Это позволяет просматривать свойства, не открывая локальный файл JAR.
project.build.directory
например. Это то, что я хотел показать.
Он указывает на ваш выходной каталог верхнего уровня (который по умолчанию target
):
РЕДАКТИРОВАТЬ: Как было указано, Codehaus сейчас, к сожалению, не существует. Вы можете найти подробную информацию об этих свойствах от Sonatype здесь:
Если вы когда-нибудь пытаетесь ссылаться на выходные каталоги в 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 собирается поместить байт-код или другие выходные данные сборки.directory
относится к каталогу, который содержит все эти выходные каталоги.
project.base.dir
указывает на корневой каталог проекта, где находится pom.xml. Вот почему после этого project.build.directory
определяется Maven ${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>
тега в результате или в эффективном pom. Он покажет значение Super POM, если вы не перезаписали.