繁体   English   中英

Maven 执行器插件丢失或无效的规则

[英]Maven enforcer plugin missing or invalid rules

我正在尝试为 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>

我也尝试用<alwaysPass/>替换<requireJavaVersion>块,以防某些东西无效,但它仍然因相同的错误而失败。

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

- - 编辑 - -

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

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

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

我在尝试构建 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>

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM