External Rules
This rule will provide rules configuration from an external resource.
It can be a classpath resource present in a maven-enforcer-plugin
dependency or a local file.
Sample Plugin Configuration:
<project> [...] <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>3.5.0</version> <dependencies> <!-- Dependency containing the enforcer/rules.xml file --> <dependency> <groupId>org.foo</groupId> <artifactId>foobar-rules</artifactId> <version>1.0.0</version> </dependency> </dependencies> <executions> <execution> <id>enforce</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <externalRules> <!-- enforcer/rules.xml is supposed to be a classpath resource present --> <!-- in org.foo:foobar-rules dependency of maven-enforcer-plugin defined above --> <location>classpath:enforcer/rules.xml</location> </externalRules> <externalRules> <!-- You can add multiple <ExternalRules> elements if you need to enforce --> <!-- rules from multiple resources. --> <!-- src/build/rules.xml is a local file path relative to ${project.basedir} --> <location>src/build/rules.xml</location> </externalRules> </rules> <fail>true</fail> </configuration> </execution> </executions> </plugin> </plugins> </build> [...] </project>
The External Enforcer Rule Descriptor
Here is a sample rules file. The rules element expects the same content as in the Enforcer Mojo rules configuration:
<enforcer> <rules> <dependencyConvergence/> <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>