通过properties
配置Maven插件与configuration
相反的优缺点是什么?
例如,maven-compiler-plugin
文档明确显示将source
和target
配置为
如下所示,可能会更进一步pluginManagement
。
https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.4</source>
<target>1.4</target>
</configuration>
</plugin>
</plugins>
[...]
</build>
[...]
</project>
使用user properties而不是更依赖特定版本会不会更简洁?
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
答案 0 :(得分:0)
您可以使用命令行参数影响属性建立时间。您可以在多模块项目中使用它们。 因此,他们正在使用它们来配置findbugs或一些用于部署的URL。
答案 1 :(得分:0)
插件会自动采用某些属性。例如,一个给定的目标/源信息。另一个是project.build.sourceEncoding
,它考虑了几个插件,如maven-compiler-plugin,maven-resources-plugin等。因此,使用减少插件配置大小和数量的属性是有意义的。
答案 2 :(得分:0)
首先,很多目标的很多参数没有任何关联的用户属性,所以只能通过<configuration>
设置。
对于那些确实具有用户属性的(例如这些示例),则视情况而定。正如@khmarbaise 指出的那样,一些用户属性专门在多个目标甚至插件之间协调。
正如@kdoteu 指出的那样,可以从命令行覆盖用户属性,这在某些情况下很有用——尽管很可能不适用于 Java 源/目标级别,这通常是项目固有的(你会在与源文件更改一起的版本化提交)。用户属性也可以被外部配置文件覆盖,例如在 settings.xml
中,这有时很重要。
另一方面,插件配置更明确:它与特定目标(或使用相同参数名称的插件中的所有目标)明确关联。一些 IDE 可以提供代码完成功能。您不必担心意外地让其他不相关的插件解释属性名称(尽管插件作者尝试为大多数用户属性名称使用独特的前缀)。令人惊讶的是,如果您输入错误的参数名称,Maven (3.8.1) 不会使构建失败,但是它会悄悄地忽略额外的元素。