26

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

目标 org.apache.maven.plugins:maven-enforcer-plugin:1.3.1:enforce 的参数“规则”丢失或无效

这是我的 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/>,以防某些内容无效,但它仍然失败并出现相同的错误。

4

3 回答 3

38

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

- - 编辑 - -

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

有两种方法可以完成这项工作。你选择哪一个取决于你需要什么。

  1. 如果您只是尝试在不运行整个构建的情况下测试执行器插件配置,请运行mvn validate.
  2. 如果要求mvn enforcer:enforce可行,则将执行 ID 更改为default-cli.
于 2014-07-18T14:37:24.753 回答
0

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

<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>
于 2020-03-17T13:06:06.063 回答
0

在我的情况下,问题是我将执行器配置放在 Maven 配置文件的构建部分中,而该配置文件在我运行时没有被构建mvn validate。一个简单mvn validate -P correctProfile的为我修好了。最后我把它放到一个多模块应用程序的父项目中,将字节码执行器规则的传递搜索设置为true:<searchTransitive>true</searchTransitive>并验证子项目中不正确的依赖确实会导致构建失败。

于 2020-08-06T14:48:24.873 回答