Maven enforcer插件缺失或规则无效

X3n*_*3no 19 java pom.xml maven-3 maven maven-enforcer-plugin

我正在尝试为maven设置enforcer插件以强制执行最低Java版本.但是,每当我试图跑步时mvn enforcer:enforce,我得到:

目标org.apache.maven.plugins:maven-enforcer-plugin:1.3.1:enforce的参数'rules'缺失或无效

这是我的pom文件的相关部分:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-enforcer-plugin</artifactId>
    <version>1.3.1</version>
    <executions>
        <execution>
            <id>enforce-java</id>
            <phase>validate</phase>
            <goals>
                <goal>enforce</goal>
            </goals>
            <configuration>
                <rules>
                    <requireJavaVersion>
                        <version>(1.7.0-20,)</version>
                    </requireJavaVersion>
                </rules>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我也试过更换<requireJavaVersion><alwaysPass/>,以防万一无效,但它仍然失败并出现同样的错误.

use*_*849 25

可能是您使用的是无效的规则名称.查看规则页面.规则名称区分大小写.虽然这不是这种情况.

----编辑----

请注意,POM配置的执行ID为enforce-java,并且执行绑定到validate生命周期的阶段.该命令mvn enforcer:enforce正在运行目标,而不是生命周期中的阶段.您在POM中提供的配置不适用于enforcer:enforce目标.

有两种方法可以完成这项工作.您选择哪一个取决于您的需求.

  1. 如果您只是尝试在不运行整个构建的情况下测试enforcer插件配置,请运行mvn validate.
  2. 如果要求mvn enforcer:enforce有效,则将执行ID更改为default-cli.

  • `default-cli`为我修好了,谢谢.我喜欢Maven如何需要难以找到的奥术咒语来使最简单的事情发挥作用. (4认同)
  • 公平地说,它的“执行”使这个配置复杂化。如果您将配置添加到插件而不是特定执行,`enforcer:enforce` 也可以工作。像这样:```&lt;plugin&gt; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt; &lt;artifactId&gt;maven-enforcer-plugin&lt;/artifactId&gt; &lt;version&gt;3.0.0-M2&lt;/version&gt; &lt;configuration &gt; &lt;rules&gt; &lt;dependencyConvergence/&gt; &lt;/rules&gt; &lt;/configuration&gt; &lt;/plugin&gt;``` (4认同)
  • 将id更改为default-cli可使mvnforcer:enforce正常工作。但是,即使不满足强制要求,“ mvn validate”也总是成功。 (3认同)