在Maven中,project.build.directory
指的是什么?我有点困惑,是否引用了Maven项目中的源代码目录或目标目录?
答案 0 :(得分:207)
你可以在超级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>
...
<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>
经过一番游说,我正在添加link to the pom-4.0.0.xml
。这允许您在不打开本地jar文件的情况下查看属性。
答案 1 :(得分:39)
它指向您的顶级输出目录(默认为“目标”):
http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide
编辑:正如已经指出的那样,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指的是包含所有这些输出目录的目录。
答案 2 :(得分:2)
您可以在项目中找到最新的答案,只需执行
即可mvn3 help:effective-pom
命令并在有效-pom中的结果中找到<build> ... <directory>
标记的值。它会显示超级POM的值,除非你被覆盖。
答案 3 :(得分:1)
除了@VerhásIstván答案(我喜欢)之外,我还希望该问题有一个内线:
${project.reporting.outputDirectory}
在您的项目中解析为target/site
。