Peter Palaga created MENFORCER-507: -------------------------------------- Summary: Add xsltLocation parameter to ExternalRules Key: MENFORCER-507 URL: https://issues.apache.org/jira/browse/MENFORCER-507 Project: Maven Enforcer Plugin Issue Type: Bug Components: externalRules Reporter: Peter Palaga
Add a new optional parameter called xsltLocation to org.apache.maven.enforcer.rules.ExternalRules. The new parameter points at a location of an XSLT file used to transform the rule document available via location before it is applied. This is useful, when users want to consume rules defined in an external project, but they need to remove or adapt some of those for the local circumstances. Example If location points at the following rule set: {code:xml} <enforcer> <rules> <bannedDependencies> <excludes> <exclude>com.google.code.findbugs:jsr305</exclude> <exclude>com.google.guava:listenablefuture</exclude> </excludes> </bannedDependencies> </rules> </enforcer> {code} And if xsltLocation points at the following transformation {code:xml} <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes"/> <!-- Copy everything unless there is a template with a more specific matcher --> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> <!-- An empty template will effectively remove the matching nodes --> <xsl:template match= "//bannedDependencies/excludes/exclude[contains(text(), 'com.google.code.findbugs:jsr305')]"/> </xsl:stylesheet> {code} Then the effective rule set will look like to following: {code:xml} <enforcer> <rules> <bannedDependencies> <excludes> <exclude>com.google.guava:listenablefuture</exclude> </excludes> </bannedDependencies> </rules> </enforcer> {code} A PR follows -- This message was sent by Atlassian Jira (v8.20.10#820010)