Maven 执行器插件缺少规则或规则无效

我正在尝试为maven设置执行器插件以强制执行最低Java版本。但是,每当我尝试运行时,我都会得到:mvn enforcer:enforce

goal 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>

我还尝试将块替换为,以防某些内容无效,但它仍然失败并出现相同的错误。<requireJavaVersion><alwaysPass/>


答案 1

可能是您使用了无效的规则名称。查看规则页面。规则名称区分大小写。虽然这里的情况并非如此。

---- 编辑----

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

有两种方法可以做到这一点。选择哪一个取决于您需要什么。

  1. 如果您只是尝试测试执行器插件配置而不运行整个构建,请运行 。mvn validate
  2. 如果要求有效,则将执行 ID 更改为 。mvn enforcer:enforcedefault-cli

答案 2

我在尝试构建vertx研讨会项目时遇到了完全相同的错误。事实证明,该错误主要是与执行器插件版本相关的问题。以下配置为我解决了这个问题。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-enforcer-plugin</artifactId>
  <version>3.0.0-M3</version><!--$NO-MVN-MAN-VER$-->
  <executions>
    <execution>
      <id>enforce-java</id>
      <phase>enforce</phase>
      <goals>
        <goal>enforce</goal>
      </goals>
      <configuration>
        <rules>
          <requireJavaVersion>
            <version>(1.8.0,)</version>
          </requireJavaVersion>
        </rules>
      </configuration>
    </execution>
  </executions>
</plugin>

推荐