在Maven中,project.build.directory
指的是什么?我有点困惑,它引用了Maven项目中的源代码目录还是目标目录?
Answers:
您可以在超级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>
经过一番游说之后,我将添加一个链接到pom-4.0.0.xml
。这使您无需打开本地jar文件即可查看属性。
project.build.directory
例如的默认值。那就是我想展示的。
它指向您的顶级输出目录(默认为target
):
编辑:正如已经指出的那样,Codehaus现在已不复存在。您可以从Sonatype找到有关这些属性的详细信息:
如果您试图在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
是指包含所有这些输出目录的目录。
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中的结果中找到标签的值。除非您已覆盖,否则它将显示超级POM的值。