Maven enforcer plugin missing or invalid rules

27,789

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.

  1. If you are just trying to test the enforcer plugin configuration without running the whole build, run mvn validate.
  2. If the requirement is that mvn enforcer:enforce works, then change the execution ID to default-cli.
Share:
27,789

Related videos on Youtube

X3no
Author by

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, 2020

Comments

  • X3no
    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
      acm over 5 years
      Possible duplicate of usage of maven enforcer plugin
    • louisgab
      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
      Govind Kalyankar about 4 years
      doesnt work, I always get error Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enfo‌​rce (default-cli) on project : No rules are configured. Use the skip flag if you want to disable execution.
    • Diablo
      Diablo almost 3 years
      This this is really helpful.
  • X3no
    X3no almost 10 years
    I 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
    X3no almost 10 years
    Changing the id to default-cli makes mvn enforcer:enforce work correctly. But mvn validate always succeeds even if the enforced requirements aren't met.
  • khmarbaise
    khmarbaise almost 10 years
    You 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
    user944849 almost 10 years
    If you change the id to default-cli, then the config will ONLY work if you run enforcer: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 ID default-cli and one with phase validate. Consider reviewing the Maven documentation for an explanation.
  • X3no
    X3no almost 10 years
    I changed the id back to enforce-java but it still doesn't get run during the validate phase.
  • X3no
    X3no almost 10 years
    Fixed it. The issue was that my plugins were nested in a <pluginManagement> tag. It works as expected now. Thanks.
  • mkm13
    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
    lmsurprenant over 5 years
    To 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>