Maven project.build.directory

Maven project.build.directory,maven,Maven,在Maven中,project.build.directory指的是什么?我有点困惑,它是引用Maven项目中的源代码目录还是目标目录?它指向您的顶级输出目录(默认情况下是target): 编辑:正如已经指出的那样,Codehaus现在不幸地不存在了。您可以在此处的Sonatype中找到有关这些属性的详细信息: 如果您试图引用Maven中的输出目录,则永远不要使用像target/classes这样的文本值。相反,您应该使用属性引用来引用这些目录 project.build.sourc

在Maven中,
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吗?如果你能提供一些细节,听起来很有趣。