在Maven super-pom.xml定义(4.0.0)中
在构建部分中定义了一些配置参数,
如:
<build>
<directory>${project.basedir}/target</directory>
<outputDirectory>${project.build.directory}/classes</outputDirectory> <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>
...
<build>
现在让我们举个例子:<outputDirectory>${project.build.directory}/classes</outputDirectory>
资源:资源插件目标使用它, 如文档中所述:
名称类型自描述outputDirectory文件 - 输出
要将资源复制到的目录。默认值为: $ {project.build.outputDirectory}。
编译器:编译插件目标也使用它(我猜),
但它在该插件的文档中没有定义。
这是为什么 ?它是缺乏规范还是什么?
我错过了什么吗?
答案 0 :(得分:0)
maven-compiler-plugin
的目标是编译源目录下的所有Java文件,即on the buildpath。确实,默认情况下,src/main/java
是源目录。但是,可以有许多其他源目录。
build-helper-maven-plugin:add-source
目标即时添加源目录。所有这些选项都围绕着相同的想法:将Java源添加到构建路径中。所有这些源都需要由编译器插件编译。
实际上,maven-compiler-plugin
的唯一关注点是:编译构建路径下的内容。我的猜测是,这就是为什么插件的文档就是这样的原因。 compile
目标包含独特的文档:
编译应用程序源
它有点理由:没有太多要指定,因为这些来源可以有各种来源,所以文档保持通用。它只指定了它需要的内容:编译构建路径下的内容。
我要补充一点,这不是特定于编译器插件的。正如您在问题中所说,这也与maven-resources-plugin
有关。在此答案中之前已经说过的所有内容也适用于资源插件:
build-helper-maven-plugin:add-resource
目标添加资源目录。您会注意到resources
目标的文档是:
将主要源代码的资源复制到主输出目录。
它没有指定src/main/resources
是默认资源目录,当然原因与编译器插件没有相同。
但是,正如您在问题中所说,it does document显然放置了这些资源。但这是因为无论这些资源的来源是什么(src/main/resources
,生成...),所有这些资源都将永远放在这个输出目录下。