8

https://stackoverflow.com/a/59389998/927493之后,现在可以从命令行调用 Maven 执行器插件。

这很好用,但不幸的是我还不明白我是否可以通过命令行设置规则参数。version规则中有一个例子RequireMavenVersion

4

1 回答 1

5

不,你不能。由于这些期望,我实际上对当前的实施并不满意。第一个用例是一个简单的无参数规则。当然,我们可以预测下一个问题。

让我们先解释一下“复杂”的插件配置是如何工作的。看看下面的例子:

<rules>
  <requireMavenVersion>
    <version/>
  </requireMavenVersion>
</rules>

这里 requireMavenVersion 是与 EnforceMojo(或目标)相同的包中的小写类名enforce,version 是此类的设置器。你所看到的只不过是一个 Pojo。这里唯一的要求是RequireMavenVersion实现了EnforcerRule接口,所以Maven可以调用它的execute方法见:

 @Parameter
 private EnforcerRule[] rules;

如果您想从命令行调用规则,插件简单尝试将规则重命名为完全限定的类名,并创建它的新实例。接下来将调用其执行方法。

对该功能的要求是在不涉及项目的情况下强制执行规则。这应该作为一个 Maven 扩展来解决,它更适合该用例。

但总而言之:不,你不能。

更新从 Maven Enforcer 3.0.0 开始,有一个Maven Enforcer Extension,它为您提供了一种额外的方式来定义执行器规则。

于 2020-02-25T21:17:04.120 回答