在Maven中,project.build.directory指什么?我有点困惑,它引用的是Maven项目中的源代码目录还是目标目录?
project.build.directory
它指向你的顶级输出目录(默认为target):
target
https://web.archive.org/web/20150527103929/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中引用输出目录,你永远不应该使用像目标/类这样的文字值。相反,您应该使用属性引用来引用这些目录。 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指的是包含所有这些输出目录的目录。
如果你试图在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指的是包含所有这些输出目录的目录。
sourceDirectory
scriptSourceDirectory
testSourceDirectory
outputDirectory
testOutputDirectory
directory
您可以在super pom中找到这些maven属性。
你可以在这里找到这个罐子:
${M2_HOME}/lib/maven-model-builder-3.0.3.jar
用7-zip或其他存档器(或使用jar工具)打开jar。
导航到
org/apache/maven/model
在那里你会找到pom-4.0.0.xml。
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文件的情况下查看属性。
可以为项目中的值找到最新的答案,只需执行
mvn3 help:effective-pom
命令,并在结果中找到<build> ... <directory>标签的值,也就是在effective-pom中。它将显示Super POM的值,除非您已覆盖。
<build> ... <directory>
除了@Verhás István的答案(我喜欢),我还期待这个问题的一句话:
在你的项目中${project.reporting.outputDirectory}解析为target/site。
${project.reporting.outputDirectory}
target/site