Class BanDuplicateClasses

java.lang.Object
org.apache.maven.enforcer.rule.api.AbstractEnforcerRule
org.codehaus.mojo.extraenforcer.dependencies.AbstractResolveDependencies
org.codehaus.mojo.extraenforcer.dependencies.BanDuplicateClasses
All Implemented Interfaces:
org.apache.maven.enforcer.rule.api.EnforcerRuleBase

@Named("banDuplicateClasses") public class BanDuplicateClasses extends AbstractResolveDependencies
Bans duplicate classes on the classpath.
  • Field Details

    • DEFAULT_CLASSES_IGNORES

      private static final String[] DEFAULT_CLASSES_IGNORES
      Default ignores which are needed for JDK 9, cause in JDK 9 and above the module-info.class will be duplicated in any jar file. Furthermore in use cases for multi release jars the module-info.class is also contained several times.
    • message

      private String message
      The failure message
    • ignoreClasses

      private String[] ignoreClasses
      List of classes to ignore. Wildcard at the end accepted
    • findAllDuplicates

      private boolean findAllDuplicates
      If false then the rule will fail at the first duplicate, if true then the rule will fail at the end.
    • dependencies

      private List<Dependency> dependencies
      List of dependencies for which you want to ignore specific classes.
    • ignoreWhenIdentical

      private boolean ignoreWhenIdentical
      If true do not fail the build when duplicate classes exactly match each other. In other words, ignore duplication if the bytecode in the class files match. Default is false.
  • Constructor Details

    • BanDuplicateClasses

      @Inject protected BanDuplicateClasses(org.apache.maven.execution.MavenSession session, org.eclipse.aether.RepositorySystem repositorySystem)
  • Method Details

    • handleArtifacts

      protected void handleArtifacts(Set<org.apache.maven.artifact.Artifact> artifacts) throws org.apache.maven.enforcer.rule.api.EnforcerRuleException
      Specified by:
      handleArtifacts in class AbstractResolveDependencies
      Throws:
      org.apache.maven.enforcer.rule.api.EnforcerRuleException
    • checkAndAddName

      private void checkAndAddName(org.apache.maven.artifact.Artifact artifact, String pathToClassFile, InputStreamSupplier inputStreamSupplier, Map<String,ClassesWithSameName> classesSeen, Set<String> duplicateClasses, Collection<AbstractResolveDependencies.IgnorableDependency> ignores) throws org.apache.maven.enforcer.rule.api.EnforcerRuleException, IOException
      Throws:
      org.apache.maven.enforcer.rule.api.EnforcerRuleException
      IOException
    • setLog

      public void setLog(org.apache.maven.enforcer.rule.api.EnforcerLogger arg0)
      Specified by:
      setLog in interface org.apache.maven.enforcer.rule.api.EnforcerRuleBase
    • getLog

      public org.apache.maven.enforcer.rule.api.EnforcerLogger getLog()