[英]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
目标。
有两种方法可以完成这项工作。 你选择哪一个取决于你需要什么。
mvn validate
。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.