【问题标题】:Difference between a maven property that is a "user property" for a plugin's parameter and a property that is a "default" for the same parameter作为插件参数的“用户属性”的 Maven 属性与作为同一参数的“默认”属性之间的区别
【发布时间】:2020-04-12 15:02:45
【问题描述】:

一些 maven 插件有 "encoding" parameter,它有一个与之关联的属性,并且还有一个默认值,它也是一个属性。

<encoding>
User Property: encoding
Default: ${project.build.sourceEncoding}

看来这两个属性做的事情是一样的:

<properties>
        <encoding>UTF-8</encoding>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

这种冗余是否有原因? 插件参数的“用户属性”属性和同一参数的“默认”属性之间有区别吗?

【问题讨论】:

  • 用户属性意味着您可以在命令行上使用它,例如mvn -Dencoding=XXX,当通过project.build.sourceEncoding 等给出适当的定义时,将获取默认值。
  • @khmarbaise project.build.sourceEncoding 也可以在命令行中设置。有什么区别?

标签: maven maven-plugin


【解决方案1】:

两者不等价。

  • project.build.sourceEncoding 指的是所有源文件的编码。这包括资源。
  • encoding 特定于 Java 源文件的编码。

【讨论】:

  • 是不是因为资源插件的“encoding”参数没有使用encoding属性?还有,为什么将project.build.sourceEncoding定义为“默认”而不是“用户属性”?
  • 资源插件的encoding参数实际上默认project.build.sourceEncoding的值。我猜sourceEncoding 这个名字真的有误导性。
  • 我相信看一下 Maven 插件的源代码就会清楚。这是资源插件的一个:github.com/apache/maven-resources-plugin/blob/…
  • @Parameter( property = "foo")@Parameter( defaultValue = "${foo}" ) 之间有什么区别?
猜你喜欢
  • 1970-01-01
  • 2015-07-18
  • 2020-08-04
  • 2015-02-27
  • 1970-01-01
  • 2011-10-08
  • 2015-04-26
  • 2011-01-05
  • 1970-01-01
相关资源
最近更新 更多