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:
    Java class file general layout
    • Field Detail

      • JDK_TO_MAJOR_VERSION_NUMBER_MAPPING

        private static final java.util.Map<java.lang.String,​java.lang.Integer> JDK_TO_MAJOR_VERSION_NUMBER_MAPPING
      • DEFAULT_CLASSES_IGNORE_BEFORE_JDK_9

        private static final java.lang.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 java.util.regex.Pattern MULTIRELEASE
      • message

        private java.lang.String message
      • 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
      • searchTransitive

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

        private java.util.List<java.lang.String> includes
        See Also:
        AbstractStrictPatternArtifactFilter
      • excludes

        private java.util.List<java.lang.String> excludes
        See Also:
        AbstractStrictPatternArtifactFilter
      • ignoreClasses

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

        private java.lang.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
    • Constructor Detail

      • EnforceBytecodeVersion

        public EnforceBytecodeVersion()
    • Method Detail

      • renderVersion

        static java.lang.String renderVersion​(int major,
                                              int minor)
      • handleArtifacts

        protected void handleArtifacts​(java.util.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 java.lang.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 java.util.Set<org.apache.maven.artifact.Artifact> checkDependencies​(java.util.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 java.lang.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​(java.util.jar.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 java.util.Set<org.apache.maven.artifact.Artifact> filterArtifacts​(java.util.Set<org.apache.maven.artifact.Artifact> dependencies)