Class 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:
    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 static 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
      • 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
      • strict

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

      • EnforceBytecodeVersion

        @Inject
        protected EnforceBytecodeVersion​(org.apache.maven.execution.MavenSession session,
                                         org.eclipse.aether.RepositorySystem repositorySystem)
    • 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)
                                                                               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)
      • setStrict

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

        private java.util.Set<org.apache.maven.artifact.Artifact> filterArtifacts​(java.util.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()