我正在尝试为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/>,以防某些东西无效,但仍然发生了相同的错误。
发布于 2014-07-18 14:37:24
可能是您使用的是无效的规则名。查看规则页面。规则名区分大小写。虽然这里不是这样的。
-编辑
注意,POM配置的执行ID为enforce-java,并且执行绑定到生命周期的validate阶段。命令mvn enforcer:enforce正在运行一个目标,而不是生命周期中的一个阶段。您在POM中提供的配置不适用于enforcer:enforce目标。
有两种方法可以让这件事成功。你选择哪一个取决于你需要什么。
mvn validate。mvn enforcer:enforce工作,那么将执行ID更改为default-cli。发布于 2020-03-17 13:06:06
在构建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>发布于 2020-08-06 14:48:24
在我的例子中,问题在于我将强制执行程序配置放在Maven配置文件的构建部分中,这部分在我运行mvn validate时没有构建。一个简单的mvn validate -P correctProfile为我修复了它。最后,我将其放入多模块应用程序的父项目中,将字节码强制执行规则的传递搜索设置为true:<searchTransitive>true</searchTransitive>,并验证了子项目中不正确的依赖确实会导致构建失败。
https://stackoverflow.com/questions/24827194
复制相似问题