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:
- Java class file general layout
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.codehaus.mojo.extraenforcer.dependencies.AbstractResolveDependencies
AbstractResolveDependencies.IgnorableDependency
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.String[]
DEFAULT_CLASSES_IGNORE_BEFORE_JDK_9
Default ignores when validating against jdk < 9 becausemodule-info.class
will always have level 1.9.private java.util.List<java.lang.String>
excludes
private java.util.List<AbstractResolveDependencies.IgnorableDependency>
ignorableDependencies
private java.lang.String[]
ignoreClasses
List of classes to ignore.private java.util.List<java.lang.String>
includes
private static java.util.Map<java.lang.String,java.lang.Integer>
JDK_TO_MAJOR_VERSION_NUMBER_MAPPING
(package private) int
maxJavaMajorVersionNumber
If unsure, don't use that parameter.(package private) int
maxJavaMinorVersionNumber
This parameter is here for potentially advanced use cases, but it seems like it is actually always 0.private java.lang.String
maxJdkVersion
JDK version as used for example in the maven-compiler-plugin: 8, 11 and so on.private java.lang.String
message
private static java.util.regex.Pattern
MULTIRELEASE
private boolean
strict
Process module-info and Multi-Release JAR classes if true
-
Constructor Summary
Constructors Modifier Constructor Description protected
EnforceBytecodeVersion(org.apache.maven.execution.MavenSession session, org.eclipse.aether.RepositorySystem repositorySystem)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.util.Set<org.apache.maven.artifact.Artifact>
checkDependencies(java.util.Set<org.apache.maven.artifact.Artifact> dependencies)
private void
closeQuietly(java.util.jar.JarFile jarFile)
private void
computeParameters()
private java.util.Set<org.apache.maven.artifact.Artifact>
filterArtifacts(java.util.Set<org.apache.maven.artifact.Artifact> dependencies)
protected java.lang.CharSequence
getErrorMessage(org.apache.maven.artifact.Artifact artifact)
org.apache.maven.enforcer.rule.api.EnforcerLogger
getLog()
protected void
handleArtifacts(java.util.Set<org.apache.maven.artifact.Artifact> artifacts)
private java.lang.String
isBadArtifact(org.apache.maven.artifact.Artifact a)
(package private) static java.lang.String
renderVersion(int major, int minor)
void
setLog(org.apache.maven.enforcer.rule.api.EnforcerLogger arg0)
void
setMaxJavaMajorVersionNumber(int maxJavaMajorVersionNumber)
void
setMaxJavaMinorVersionNumber(int maxJavaMinorVersionNumber)
void
setStrict(boolean strict)
Process module-info and Multi-Release JAR classes if true-
Methods inherited from class org.codehaus.mojo.extraenforcer.dependencies.AbstractResolveDependencies
asRegex, execute
-
-
-
-
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 becausemodule-info.class
will always have level 1.9.
-
MULTIRELEASE
private static final java.util.regex.Pattern MULTIRELEASE
-
message
private java.lang.String message
-
maxJdkVersion
private java.lang.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 seemaxJavaMajorVersionNumber
andmaxJavaMinorVersionNumber
Mandatory ifmaxJavaMajorVersionNumber
not specified.
-
maxJavaMajorVersionNumber
int maxJavaMajorVersionNumber
If unsure, don't use that parameter. Better look atmaxJdkVersion
. Mandatory ifmaxJdkVersion
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.
-
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
-
ignorableDependencies
private java.util.List<AbstractResolveDependencies.IgnorableDependency> ignorableDependencies
-
-
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 classAbstractResolveDependencies
- 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 interfaceorg.apache.maven.enforcer.rule.api.EnforcerRuleBase
-
getLog
public org.apache.maven.enforcer.rule.api.EnforcerLogger getLog()
-
-