Class EnforceBytecodeVersion

All Implemented Interfaces:
org.apache.maven.enforcer.rule.api.EnforcerRule, org.apache.maven.enforcer.rule.api.EnforcerRule2

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 < 9 because module-info.class will always have level 1.9.
    • MULTIRELEASE

      private final Pattern MULTIRELEASE
    • message

      private String message
    • maxJdkVersion

      private String maxJdkVersion
      JDK version as used for example in the maven-compiler-plugin: 1.5, 1.6 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:
    • searchTransitive

      private boolean searchTransitive
      Specify if transitive dependencies should be searched (default) or only look at direct dependencies.
    • 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
    • ignoredScopes

      private String[] ignoredScopes
      Optional list of dependency scopes to ignore. test and provided make sense here.
    • ignoreOptionals

      private boolean ignoreOptionals
      Ignore all dependencies which have &lt;optional&gt;true&lt;/optional&gt;.
      Since:
      1.2
    • ignorableDependencies

      private List<AbstractResolveDependencies.IgnorableDependency> ignorableDependencies
  • Constructor Details

    • EnforceBytecodeVersion

      public EnforceBytecodeVersion()
  • 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
    • isSearchTransitive

      protected boolean isSearchTransitive()
      Overrides:
      isSearchTransitive in class AbstractResolveDependencies
    • 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, org.apache.maven.plugin.logging.Log log) 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)
    • setSearchTransitive

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

      private Set<org.apache.maven.artifact.Artifact> filterArtifacts(Set<org.apache.maven.artifact.Artifact> dependencies)