Maven enforcer plugin missing or invalid rules
It may be that you are using invalid rule names. Check out the rules page. The rule names are case sensitive. Though this is not the case here.
---- Edit ----
Note that the POM configuration has an execution ID of enforce-java
and that execution is bound to the validate
phase of the lifecycle. The command mvn enforcer:enforce
is running a goal, not a phase in the lifecycle. The configuration you provided in the POM doesn't apply to the enforcer:enforce
goal.
There are two ways to make this work. Which one you choose depends on what you need.
- If you are just trying to test the enforcer plugin configuration without running the whole build, run
mvn validate
. - If the requirement is that
mvn enforcer:enforce
works, then change the execution ID todefault-cli
.
Related videos on Youtube
X3no
I'm a webdeveloper and programmer skilled in php, css, html, as well as some basic Javascript, Jquery, Java, and C++.
Updated on August 07, 2020Comments
-
X3no almost 4 years
I am trying to setup the enforcer plugin for maven to enforce a minimum Java version. However, whenever I try to run
mvn enforcer:enforce
, I get:The parameters 'rules' for goal org.apache.maven.plugins:maven-enforcer-plugin:1.3.1:enforce are missing or invalid
Here is the relevant portion of my pom file:
<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>
I also tried replacing the
<requireJavaVersion>
block with<alwaysPass/>
, in case something was invalid, but it still failed with the same error.-
acm over 5 yearsPossible duplicate of usage of maven enforcer plugin
-
louisgab over 5 years@acm in my case the solution was the default-cli parameter, part of the accepted answer here. Less obvious in stackoverflow.com/questions/6754974/…
-
Govind Kalyankar about 4 yearsdoesnt work, I always get error Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce (default-cli) on project : No rules are configured. Use the skip flag if you want to disable execution.
-
Diablo almost 3 yearsThis this is really helpful.
-
-
X3no almost 10 yearsI was originally using <requireJavaVersion> and <alwaysPass> but when I copied it here I did it incorrectly. even with the valid rule names I get the same error. I edited the post to correct this.
-
X3no almost 10 yearsChanging the id to
default-cli
makesmvn enforcer:enforce
work correctly. Butmvn validate
always succeeds even if the enforced requirements aren't met. -
khmarbaise almost 10 yearsYou should check your version range for Java you have given. I think you would like to do something like this: ´<version>[1.7.0,)</version>`.
-
user944849 almost 10 yearsIf you change the id to
default-cli
, then the config will ONLY work if you runenforcer:enforce
from the command line. The way you originally had it, the config works when run as part of the lifecycle. If you want both to work, then you need two executions, one with IDdefault-cli
and one with phasevalidate
. Consider reviewing the Maven documentation for an explanation. -
X3no almost 10 yearsI changed the id back to enforce-java but it still doesn't get run during the validate phase.
-
X3no almost 10 yearsFixed it. The issue was that my plugins were nested in a
<pluginManagement>
tag. It works as expected now. Thanks. -
mkm13 about 9 years
default-cli
fixed it for me, thanks. I like how Maven requires hard-to-find arcane incantations to make the simplest things work. -
lmsurprenant over 5 yearsTo be fair, its the
execution
that complicates this configuration.enforcer:enforce
would also work if you added the configuration to the plugin instead of a specific execution. Something like this:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>3.0.0-M2</version> <configuration> <rules> <dependencyConvergence/> </rules> </configuration> </plugin>