Skip to content

A Maven Enforcer Rule that allows reusing Enforcer Rules by reading rule descriptor files

License

Notifications You must be signed in to change notification settings

gastaldi/enforcer-rules

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Enforcer Rules

ExternalRules

An Enforcer Rule that allows reusing Enforcer Rules by reading rule descriptor files

This rule supports rule descriptors to allow reusing enforcer rules as maven dependencies

See https://issues.apache.org/jira/browse/MENFORCER-422 for more detail

Usage

Add the following to your pom.xml:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-enforcer-plugin</artifactId>
    <version>3.1.0</version>
    <dependencies>
        <dependency>
            <groupId>com.github.gastaldi</groupId>
            <artifactId>enforcer-rules</artifactId>
            <version>0.0.1</version>
        </dependency>
    </dependencies>
    <executions>
        <execution>
            <id>enforce</id>
            <configuration>
                <rules>
                    <!-- This is where we use our External Rules -->
                    <externalRules>
                        <location>classpath:enforcer-rules/my-rules.xml</location>
                        <!-- You can also use a file path -->
                        <!--<location>enforcer-rules.xml</location> -->
                    </externalRules>
                </rules>
            </configuration>
            <goals>
                <goal>enforce</goal>
            </goals>
        </execution>
    </executions>
</plugin>

In the example above <location>classpath:enforcer-rules/my-rules.xml</location> is an XML file in enforcer-rules/my-rules.xml existing in the plugin dependencies.

The enforcer-rules/my-rules.xml has the following content:

<enforcer>
    <rules>
        <dependencyConvergence/>
        <requireJavaVersion>
            <version>11</version>
        </requireJavaVersion>
        <requireMavenVersion>
            <version>[3.6.2,)</version>
        </requireMavenVersion>
        <bannedDependencies>
            <excludes>
                <exclude>org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec</exclude>
            </excludes>
            <includes>
                <include>jakarta.xml.bind:jakarta.xml.bind-api:*:*:test</include>
            </includes>
        </bannedDependencies>
    </rules>
</enforcer>

Heavily based on https://maven.apache.org/plugins/maven-assembly-plugin/examples/sharing-descriptors.html

About

A Maven Enforcer Rule that allows reusing Enforcer Rules by reading rule descriptor files

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages