maven - Maven插件参数的用户属性是什么意思

标签 maven

我是Maven的新手。
当我尝试引用任何Maven插件文档时,我总是会看到以下格式的参数定义:
名称说明
{参数名称} {说明}
默认值为:...
用户属性是:...

在大多数情况下,我看到用户属性与参数名称相同。
我想知道“用户属性”和“参数名称”之间有什么区别。我认为在配置它们时指定对应插件的参数值时,参数名称应为元素标签名称,但是“用户属性”的用法是什么?

最佳答案

注意:这是针对Maven 3的。早期版本有所不同。

TL; DR:

“用户属性”指定可用于设置插件参数的Maven property的名称。这允许从<configuration>部分之外配置插件。请注意,这仅在<configuration>部分中未指定参数的情况下有效(请参阅MNG-4979 - Cannot override configuration parameter from command line)。

Maven属性可以在POM的<properties>部分中设置,也可以在命令行上设置为-DmyProperty=myValue

长版

在Maven中,通常在POM的 <configuration>部分中设置插件的参数。插件文档中提供的“参数名称”是在配置设置中使用的名称。

例如,Surefire目标surefire:test具有参数“failIfNoSpecifiedTests”。要在POM中进行设置,请使用:

<configuration>
<failIfNoSpecifiedTests>false</failIfNoSpecifiedTests>
</configuration>

但是,有时从<configuration>部分之外设置插件参数很有用,例如,在命令行或Maven配置文件中进行设置。为此,插件还可以声明它将从Maven属性(如果已设置)中读取参数值。此属性是docs列出的用户属性

failIfNoSpecifiedTests的用户属性为surefire.failIfNoSpecifiedTests。因此,除了上面的<configuration>部分,还可以使用属性surefire.failIfNoSpecifiedTests。例如:

在命令行上通过指定-Dsurefire.failIfNoSpecifiedTests=false 来实现

  • POM配置文件中的
  • :<properties> <surefire.failIfNoSpecifiedTests> false </surefire.failIfNoSpecifiedTests> ...

  • 请注意,插件必须为每个参数声明User属性,因此并非所有参数都具有一个。例如,参数basedir没有用户属性,因此无法在命令行上设置。

    在插件的源代码中,未明确声明参数名称;它取自Java字段的名称。 source code for "failIfNoSpecifiedTests" is:
    /**
     * Set this to "true" to cause a failure if the none of the tests
     * specified in -Dtest=... are run. Defaults to "true".
     *
     * @since 2.12
     */
    @Parameter( property = "surefire.failIfNoSpecifiedTests" )
    private Boolean failIfNoSpecifiedTests;
    

    您可以看到参数名称“failIfNoSpecifiedTests”是从字段名称中获取的。注释参数“属性”定义要使用的Maven属性。

    关于maven - Maven插件参数的用户属性是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23391502/

    相关文章:

    java - 如何强制 Maven 在站点生命周期之前运行构建生命周期?

    java - 基于配置文件的 Maven 子依赖项

    java - Maven 无法解析 Vaadin 插件依赖性

    java - 建立APK:建立APK时发生错误。您可以在 'Messages' View 中找到错误

    java - Eclipse (Photon) 找不到我的 Maven 依赖项 jar

    maven - Gradle等同于Maven存储库管理参数

    java - Spring JDBCTemplate 总是抛出 QueryTimeOutException

    java - 对 Maven 原型(prototype)使用​​ create-from-project : Include empty directories

    java - IntelliJ 2016.3 GAE 部署 Java8/7

    java - 未能在项目 hapi-fhir-jpaserver-starter 上执行目标 org.apache.maven.plugins :maven-war-plugin:3. 2.3:war (default-war)