【问题标题】:Add parameters to Maven Enforcer Rules called from the command line将参数添加到从命令行调用的 Maven Enforcer Rules
【发布时间】:2020-02-17 15:47:34
【问题描述】:

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

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

【问题讨论】:

  • 好像不支持通过命令行设置参数。
  • 仅供参考,我发现 Jira 问题中的问题很有趣,documented the corresponding problem 因为我认为这是一个错误。甚至没有对带有参数的规则进行自动测试,因此从未检测到这一点。除了通过 CLI 设置参数外,如果在 POM 中定义了相同的参数,它甚至都不起作用。

标签: java maven command-line-interface maven-enforcer-plugin


【解决方案1】:

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

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

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

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

 @Parameter
 private EnforcerRule[] rules;

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多