Class BannedDependenciesBase

All Implemented Interfaces:
EnforcerRuleBase
Direct Known Subclasses:
BannedDependencies, RequireReleaseDeps

abstract class BannedDependenciesBase extends AbstractStandardEnforcerRule
Abstract base class for rules which validate the transitive dependency tree by traversing all children and validating every dependency artifact.
  • Field Details

    • excludes

      private List<String> excludes
      Specify the banned dependencies. This can be a list of artifacts in the format groupId[:artifactId][:version]. Any of the sections can be a wildcard by using '*' (ie group:*:1.0)
      The rule will fail if any dependency matches any exclude, unless it also matches an include rule.
      See Also:
    • includes

      private List<String> includes
      Specify the allowed dependencies. This can be a list of artifacts in the format groupId[:artifactId][:version]. Any of the sections can be a wildcard by using '*' (ie group:*:1.0)
      Includes override the exclude rules. It is meant to allow wide exclusion rules with wildcards and still allow a smaller set of includes.
      For example, to ban all xerces except xerces-api -> exclude "xerces", include "xerces:xerces-api"
      See Also:
    • searchTransitive

      private boolean searchTransitive
      Specify if transitive dependencies should be searched (default) or only look at direct dependencies.
    • session

      private final org.apache.maven.execution.MavenSession session
    • resolverUtil

      private final ResolverUtil resolverUtil
  • Constructor Details

    • BannedDependenciesBase

      BannedDependenciesBase(org.apache.maven.execution.MavenSession session, ResolverUtil resolverUtil)
  • Method Details

    • getSession

      protected org.apache.maven.execution.MavenSession getSession()
    • execute

      public void execute() throws EnforcerRuleException
      Description copied from class: AbstractEnforcerRule
      This is the interface into the rule. This method should throw an exception containing a reason message if the rule fails the check. The plugin will then decide based on the fail flag and rule level if it should stop or just log the message as a warning.
      Specified by:
      execute in class AbstractEnforcerRule
      Throws:
      EnforcerRuleException - the enforcer rule exception
    • validate

      protected boolean validate(org.eclipse.aether.graph.DependencyNode node, int level, StringBuilder messageBuilder)
    • getErrorMessage

      protected abstract String getErrorMessage()
    • validate

      protected abstract boolean validate(org.apache.maven.artifact.Artifact dependency)
      Validates a dependency artifact if it fulfills the enforcer rule
      Parameters:
      dependency - dependency to be checked against the list of excludes
      Returns:
      true if the dependency passes the rule, false if the dependency triggers a validation error
    • setSearchTransitive

      public void setSearchTransitive(boolean theSearchTransitive)
      Sets the search transitive.
      Parameters:
      theSearchTransitive - the searchTransitive to set
    • getExcludes

      public List<String> getExcludes()
      Gets the excludes.
      Returns:
      the excludes
    • setExcludes

      public void setExcludes(List<String> theExcludes)
      Specify the banned dependencies. This can be a list of artifacts in the format groupId[:artifactId][:version]. Any of the sections can be a wildcard by using '*' (ie group:*:1.0)
      The rule will fail if any dependency matches any exclude, unless it also matches an include rule.
      Parameters:
      theExcludes - the excludes to set
      See Also:
    • getIncludes

      public List<String> getIncludes()
      Gets the includes.
      Returns:
      the includes
    • setIncludes

      public void setIncludes(List<String> theIncludes)
      Specify the allowed dependencies. This can be a list of artifacts in the format groupId[:artifactId][:version]. Any of the sections can be a wildcard by using '*' (ie group:*:1.0)
      Includes override the exclude rules. It is meant to allow wide exclusion rules with wildcards and still allow a smaller set of includes.
      For example, to ban all xerces except xerces-api → exclude "xerces", include "xerces:xerces-api"
      Parameters:
      theIncludes - the includes to set
      See Also:
    • isSearchTransitive

      public boolean isSearchTransitive()