Maven插件配置与属性

时间:2015-09-16 14:44:23

标签: java maven

通过properties配置Maven插件与configuration相反的优缺点是什么?

例如,maven-compiler-plugin文档明确显示将sourcetarget配置为 如下所示,可能会更进一步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>

3 个答案:

答案 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) 不会使构建失败,但是它会悄悄地忽略额外的元素。