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:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.codehaus.mojo.extraenforcer.dependencies.AbstractResolveDependencies
AbstractResolveDependencies.IgnorableDependency
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final String[]
Default ignores when validating against jdk invalid input: '<' 9 becausemodule-info.class
will always have level 1.9.private String[]
List of classes to ignore.private String[]
Optional list of dependency scopes to ignore.private boolean
Ignore all dependencies which have<optional>true</optional>
.(package private) int
If unsure, don't use that parameter.(package private) int
This parameter is here for potentially advanced use cases, but it seems like it is actually always 0.private String
JDK version as used for example in the maven-compiler-plugin: 1.5, 1.6 and so on.private String
private static final Pattern
private boolean
Specify if transitive dependencies should be searched (default) or only look at direct dependencies.private boolean
Process module-info and Multi-Release JAR classes if true -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
EnforceBytecodeVersion
(org.apache.maven.execution.MavenSession session, org.eclipse.aether.RepositorySystem repositorySystem, org.apache.maven.shared.dependency.graph.DependencyGraphBuilder graphBuilder) -
Method Summary
Modifier and TypeMethodDescriptionprotected Set
<org.apache.maven.artifact.Artifact> checkDependencies
(Set<org.apache.maven.artifact.Artifact> dependencies) private void
closeQuietly
(JarFile jarFile) private void
private Set
<org.apache.maven.artifact.Artifact> filterArtifacts
(Set<org.apache.maven.artifact.Artifact> dependencies) protected CharSequence
getErrorMessage
(org.apache.maven.artifact.Artifact artifact) org.apache.maven.enforcer.rule.api.EnforcerLogger
getLog()
protected void
handleArtifacts
(Set<org.apache.maven.artifact.Artifact> artifacts) private String
isBadArtifact
(org.apache.maven.artifact.Artifact a) protected boolean
(package private) static 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
setSearchTransitive
(boolean theSearchTransitive) Sets the search transitive.void
setStrict
(boolean strict) Process module-info and Multi-Release JAR classes if trueMethods inherited from class org.codehaus.mojo.extraenforcer.dependencies.AbstractResolveDependencies
asRegex, execute
Methods inherited from class org.apache.maven.enforcer.rule.api.AbstractEnforcerRule
getCacheId, getLevel
-
Field Details
-
JDK_TO_MAJOR_VERSION_NUMBER_MAPPING
-
DEFAULT_CLASSES_IGNORE_BEFORE_JDK_9
Default ignores when validating against jdk invalid input: '<' 9 becausemodule-info.class
will always have level 1.9. -
MULTIRELEASE
-
message
-
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 seemaxJavaMajorVersionNumber
andmaxJavaMinorVersionNumber
Mandatory ifmaxJavaMajorVersionNumber
not specified. -
maxJavaMajorVersionNumber
int maxJavaMajorVersionNumberIf 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 maxJavaMinorVersionNumberThis parameter is here for potentially advanced use cases, but it seems like it is actually always 0.- See Also:
-
searchTransitive
private boolean searchTransitiveSpecify if transitive dependencies should be searched (default) or only look at direct dependencies. -
includes
- See Also:
-
excludes
- See Also:
-
ignoreClasses
List of classes to ignore. Wildcard at the end accepted -
strict
private boolean strictProcess module-info and Multi-Release JAR classes if true -
ignoredScopes
Optional list of dependency scopes to ignore.test
andprovided
make sense here. -
ignoreOptionals
private boolean ignoreOptionalsIgnore all dependencies which have<optional>true</optional>
.- Since:
- 1.2
-
ignorableDependencies
-
-
Constructor Details
-
Method Details
-
renderVersion
-
handleArtifacts
protected void handleArtifacts(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
-
isSearchTransitive
protected boolean isSearchTransitive()- Overrides:
isSearchTransitive
in classAbstractResolveDependencies
-
getErrorMessage
-
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
-
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
-
setStrict
public void setStrict(boolean strict) Process module-info and Multi-Release JAR classes if true- Parameters:
strict
- the strictness to set
-
filterArtifacts
-
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()
-