我是Maven的新手。 当我尝试引用任何maven插件文档时,我总是看到参数定义的以下格式: 名称描述 {参数名称} {description} 默认值为:... 用户属性 是:...
在大多数情况下,我看到user属性与参数名称相同。 我想知道“用户属性”和“参数名称”之间有什么区别。我认为参数名称在配置它们时指定对应插件的参数值时应该是元素标签名称,但是“用户属性”的用法是什么?
我是Maven的新手。 当我尝试引用任何maven插件文档时,我总是看到参数定义的以下格式: 名称描述 {参数名称} {description} 默认值为:... 用户属性 是:...
在大多数情况下,我看到user属性与参数名称相同。 我想知道“用户属性”和“参数名称”之间有什么区别。我认为参数名称在配置它们时指定对应插件的参数值时应该是元素标签名称,但是“用户属性”的用法是什么?
注意:这适用于Maven 3.早期版本(有点)不同。
TL; DR:
“用户属性”指定的名称 Maven财产 可用于设置插件参数。这允许从外部配置插件 <configuration>
部分。请注意,这仅在参数为时有效 不 在...中指定 <configuration>
部分(见 MNG-4979 - 无法从命令行覆盖配置参数)。
可以在部分的POM中设置Maven属性 <properties>
,或在命令行上 -DmyProperty=myValue
。
长版
在Maven中,插件的参数通常设置为 <configuration>
部分 在POM中。插件文档中给出的“参数名称”是配置设置中使用的名称。
例如,Surefire目标 神火:测试 有一个参数“failIfNoSpecifiedTests”。要在POM中设置它,请使用:
<configuration>
<failIfNoSpecifiedTests>false</failIfNoSpecifiedTests>
</configuration>
但是,有时从外部设置插件参数很有用 <configuration>
例如,在命令行或Maven配置文件中设置它。为此,插件还可以声明它将从Maven属性(如果设置)读取参数值。此属性是文档列出的属性 用户属性。
failIfNoSpecifiedTests的User属性是 surefire.failIfNoSpecifiedTests
。所以而不是 <configuration>
在上面的部分中,还可以使用属性surefire.failIfNoSpecifiedTests。例如:
-Dsurefire.failIfNoSpecifiedTests=false
<properties> <surefire.failIfNoSpecifiedTests> false </surefire.failIfNoSpecifiedTests> ...
请注意,必须通过插件为每个参数声明User属性,因此并非所有参数都具有一个参数。例如,参数 basedir
没有User属性,因此无法在命令行上设置。
在插件的源代码中,未显式声明参数名称;它取自Java字段的名称。该 “failIfNoSpecifiedTests”的源代码是:
/**
* 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”取自字段名称。注释参数“property”定义要使用的Maven属性。
注意:这适用于Maven 3.早期版本(有点)不同。
TL; DR:
“用户属性”指定的名称 Maven财产 可用于设置插件参数。这允许从外部配置插件 <configuration>
部分。请注意,这仅在参数为时有效 不 在...中指定 <configuration>
部分(见 MNG-4979 - 无法从命令行覆盖配置参数)。
可以在部分的POM中设置Maven属性 <properties>
,或在命令行上 -DmyProperty=myValue
。
长版
在Maven中,插件的参数通常设置为 <configuration>
部分 在POM中。插件文档中给出的“参数名称”是配置设置中使用的名称。
例如,Surefire目标 神火:测试 有一个参数“failIfNoSpecifiedTests”。要在POM中设置它,请使用:
<configuration>
<failIfNoSpecifiedTests>false</failIfNoSpecifiedTests>
</configuration>
但是,有时从外部设置插件参数很有用 <configuration>
例如,在命令行或Maven配置文件中设置它。为此,插件还可以声明它将从Maven属性(如果设置)读取参数值。此属性是文档列出的属性 用户属性。
failIfNoSpecifiedTests的User属性是 surefire.failIfNoSpecifiedTests
。所以而不是 <configuration>
在上面的部分中,还可以使用属性surefire.failIfNoSpecifiedTests。例如:
-Dsurefire.failIfNoSpecifiedTests=false
<properties> <surefire.failIfNoSpecifiedTests> false </surefire.failIfNoSpecifiedTests> ...
请注意,必须通过插件为每个参数声明User属性,因此并非所有参数都具有一个参数。例如,参数 basedir
没有User属性,因此无法在命令行上设置。
在插件的源代码中,未显式声明参数名称;它取自Java字段的名称。该 “failIfNoSpecifiedTests”的源代码是:
/**
* 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”取自字段名称。注释参数“property”定义要使用的Maven属性。
我想我可能得到了答案,但仍然不能保证。 答案取决于包org.apache.maven.plugins.annotations中的注释类型参数。在此注释类型中,它定义了几个字段。其中:
它指的是财产适用的背景。例如,有诸如JVM版本,OS名称等的系统属性,它们不是“用户属性”,因为用户不应该设置它们。请注意,这不是Maven特定的概念,它是一种更通用的方式,Java处理与配置相关的各种信息(即,通常是运行进程的平台或上下文的特征)。 “用户属性”只是暗示用户(即运行Maven或配置Maven pom.xml的人)正在设置属性值。