Maven project.build.directory
在Maven中,Maven project.build.directory,maven,Maven,在Maven中,project.build.directory指的是什么?我有点困惑,它是引用Maven项目中的源代码目录还是目标目录?它指向您的顶级输出目录(默认情况下是target): 编辑:正如已经指出的那样,Codehaus现在不幸地不存在了。您可以在此处的Sonatype中找到有关这些属性的详细信息: 如果您试图引用Maven中的输出目录,则永远不要使用像target/classes这样的文本值。相反,您应该使用属性引用来引用这些目录 project.build.sourc
project.build.directory
指的是什么?我有点困惑,它是引用Maven项目中的源代码目录还是目标目录?它指向您的顶级输出目录(默认情况下是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将放置字节码或其他生成输出的目录的访问<代码>目录指包含所有这些输出目录的目录
project.build.sourceDirectory
project.build.scriptSourceDirectory
project.build.testSourceDirectory
project.build.outputDirectory
project.build.testOutputDirectory
project.build.directory
您可以在超级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
它包含所有这些“捷径”:
...
${project.basedir}/target
${project.build.directory}/classes
${project.artifactId}-${project.version}
${project.build.directory}/test类
${project.basedir}/src/main/java
src/main/scripts
${project.basedir}/src/test/java
${project.basedir}/src/main/resources
${project.basedir}/src/test/resources
...
...
更新
经过一番游说之后,我加入了一个新的方案。这允许您在不打开本地jar文件的情况下查看属性。您可以在项目中找到值的最新答案,只需执行
mvn3 help:effective-pom
命令并查找
代码>有效pom中结果aka中标记的值。它将显示超级POM的值,除非您已覆盖。除了@Verhás István答案(我喜欢),我还希望问题有一行:
${project.reporting.outputDirectory}
解析为项目中的target/site
。我建议使用在线参考,而不是归档到jar中的文件。这个:@khmarbaise很好,但是它没有显示project.build.directory的默认值。这就是我想要展示的。github镜像允许链接到特定的行号:否则,它在svn中:@MartinEllis OK,我也用链接更新了我的答案。非常感谢。我在搜索maven回购协议的来源。相对较少的点击次数(9)。没有任何东西可以直接设置该属性。一定要把它放在某个地方!这个URL显示了我看到的搜索结果:codehause.org主机已经终止,这个链接不再工作了。是的,真的很遗憾。我已经更新了一个工作链接,并引用了链接页面的相关部分……因此project.base.dir
指向项目的根目录,pom.xml位于该目录下。这就是为什么在此之后,Maven定义的project.build.directory
是${project.basedir}/target
。谢谢大家,我不知道这一点。虽然看起来是真的,但您是如何获得此信息的:“project.base.dir指向pom.xml所在项目的根目录”。我在哪里可以看到这个定义?假设您的项目名为project-A,在project-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类
。这并没有显示一些核心属性,比如project.basedir
。在其他方面它也不完整。@ingyhere这是正确的,有效的pom不包含project.basedir
。实际上,原因是即使是超级pom也不包含els。什么你错过了有效的pom吗?如果你能提供一些细节,听起来很有趣。