Java Maven enforcer插件缺少或无效规则
我正在尝试为maven设置enforcer插件,以强制执行最低Java版本。但是,每当我尝试运行Java Maven enforcer插件缺少或无效规则,java,maven,maven-3,pom.xml,maven-enforcer-plugin,Java,Maven,Maven 3,Pom.xml,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>
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>
org.apache.maven.plugins
maven enforcer插件
1.3.1
强制执行java
验证
执行
(1.7.0-20,)
我还尝试将
块替换为
,以防某些内容无效,但仍然失败,并出现相同的错误。可能是您使用了无效的规则名称。查看页面。
规则名称区分大小写。
虽然这里不是这样
----编辑----
请注意,POM配置的执行ID为EnforceJava
,并且执行绑定到生命周期的validate
阶段。mvn enforcer:enforce命令运行的是一个目标,而不是生命周期中的一个阶段。您在POM中提供的配置不适用于enforcer:enforce
目标
有两种方法可以实现这一点。你选择哪一个取决于你需要什么
mvn validate
李>
mvn enforcer:enforce
工作,则将执行ID更改为default cli
我在尝试构建vertx workshop项目时遇到了完全相同的错误。事实证明,该错误主要是与enforcer插件版本相关的问题。下面的配置为我解决了这个问题
org.apache.maven.plugins
maven enforcer插件
3.0.0-M3
强制执行java
执行
执行
(1.8.0,)
在我的例子中,问题是我将enforcer配置放在Maven配置文件的构建部分中,当我运行mvn validate
时,该配置文件没有被构建。一个简单的mvn验证-P correctProfile
为我修复了它。最后,我将其放入一个多模块应用程序的父项目中,将字节码执行器规则的传递搜索设置为true:true
,并验证子项目中不正确的依赖关系确实会导致生成失败。我最初使用的是,但当我在此处复制它时,我做得不正确。即使使用有效的规则名称,我也会遇到相同的错误。我编辑了这篇文章以更正此问题。将id更改为default cli
可使mvn enforcer:enforce
正常工作。但是mvn validate
始终成功,即使强制要求没有得到满足。您应该检查您提供的Java版本范围。我想你会喜欢这样做:'[1.7.0,)`.default cli
为我修复了它,谢谢。我喜欢Maven如何要求难以找到的神秘咒语来让最简单的事情工作。公平地说,是execution
使此配置复杂化。enforcer:enforce
如果您将配置添加到插件而不是特定的execute,它也会工作注意:类似这样:org.apache.maven.plugins maven enforcer plugin 3.0.0-M2
可能与@acm重复在我的情况下,解决方案是默认cli参数,这是公认答案的一部分。不太明显的是,在不起作用的情况下,我总是会遇到执行目标org.apache失败的错误.maven.plugins:maven enforcer plugin:3.0.0-M3:enforce(默认cli)on project:未配置任何规则。如果要禁用执行,请使用跳过标志。