在https://stackoverflow.com/a/59389998/927493之后,现在可以从命令行调用 Maven 执行器插件。
这很好用,但不幸的是我还不明白我是否可以通过命令行设置规则参数。version
规则中有一个例子RequireMavenVersion
。
在https://stackoverflow.com/a/59389998/927493之后,现在可以从命令行调用 Maven 执行器插件。
这很好用,但不幸的是我还不明白我是否可以通过命令行设置规则参数。version
规则中有一个例子RequireMavenVersion
。
不,你不能。由于这些期望,我实际上对当前的实施并不满意。第一个用例是一个简单的无参数规则。当然,我们可以预测下一个问题。
让我们先解释一下“复杂”的插件配置是如何工作的。看看下面的例子:
<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,它为您提供了一种额外的方式来定义执行器规则。