Class EnforceBytecodeVersion

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

@Named("enforceBytecodeVersion") public class EnforceBytecodeVersion extends AbstractResolveDependencies
Enforcer rule that will check the bytecode version of each class of each dependency.
Since:
1.0-alpha-4
See Also:
  • Field Details

    • JDK_TO_MAJOR_VERSION_NUMBER_MAPPING

      private static final Map<String,Integer> JDK_TO_MAJOR_VERSION_NUMBER_MAPPING
    • DEFAULT_CLASSES_IGNORE_BEFORE_JDK_9

      private static final String[] DEFAULT_CLASSES_IGNORE_BEFORE_JDK_9
      Default ignores when validating against jdk invalid input: '<' 9 because module-info.class will always have level 1.9.
    • MULTIRELEASE

      private static final Pattern MULTIRELEASE
    • message

      private String message
    • maxJdkVersion

      private String maxJdkVersion
      JDK version as used for example in the maven-compiler-plugin: 8, 11 and so on. If in need of more precise configuration please see maxJavaMajorVersionNumber and maxJavaMinorVersionNumber Mandatory if maxJavaMajorVersionNumber not specified.
    • maxJavaMajorVersionNumber

      int maxJavaMajorVersionNumber
      If unsure, don't use that parameter. Better look at maxJdkVersion. Mandatory if maxJdkVersion is not specified. see http://en.wikipedia.org/wiki/Java_class_file#General_layout
    • maxJavaMinorVersionNumber

      int maxJavaMinorVersionNumber
      This parameter is here for potentially advanced use cases, but it seems like it is actually always 0.
      See Also:
    • includes

      private List<String> includes
      See Also:
      • AbstractStrictPatternArtifactFilter
    • excludes

      private List<String> excludes
      See Also:
      • AbstractStrictPatternArtifactFilter
    • ignoreClasses

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

      private boolean strict
      Process module-info and Multi-Release JAR classes if true
    • ignorableDependencies

      private List<AbstractResolveDependencies.IgnorableDependency> ignorableDependencies
  • Constructor Details

    • EnforceBytecodeVersion

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

    • renderVersion

      static String renderVersion(int major, int minor)
    • 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
    • getErrorMessage

      protected CharSequence getErrorMessage(org.apache.maven.artifact.Artifact artifact)
    • computeParameters

      private void computeParameters() throws org.apache.maven.enforcer.rule.api.EnforcerRuleException
      Throws:
      org.apache.maven.enforcer.rule.api.EnforcerRuleException
    • checkDependencies

      protected Set<org.apache.maven.artifact.Artifact> checkDependencies(Set<org.apache.maven.artifact.Artifact> dependencies) throws org.apache.maven.enforcer.rule.api.EnforcerRuleException
      Throws:
      org.apache.maven.enforcer.rule.api.EnforcerRuleException
    • isBadArtifact

      private String isBadArtifact(org.apache.maven.artifact.Artifact a) throws org.apache.maven.enforcer.rule.api.EnforcerRuleException
      Throws:
      org.apache.maven.enforcer.rule.api.EnforcerRuleException
    • closeQuietly

      private void closeQuietly(JarFile jarFile)
    • setMaxJavaMajorVersionNumber

      public void setMaxJavaMajorVersionNumber(int maxJavaMajorVersionNumber)
    • setMaxJavaMinorVersionNumber

      public void setMaxJavaMinorVersionNumber(int maxJavaMinorVersionNumber)
    • setStrict

      public void setStrict(boolean strict)
      Process module-info and Multi-Release JAR classes if true
      Parameters:
      strict - the strictness to set
    • filterArtifacts

      private Set<org.apache.maven.artifact.Artifact> filterArtifacts(Set<org.apache.maven.artifact.Artifact> dependencies)
    • 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()