Class DependencyConvergence
java.lang.Object
org.apache.maven.plugins.enforcer.DependencyConvergence
- All Implemented Interfaces:
EnforcerRule
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static org.codehaus.plexus.i18n.I18N
private static org.apache.maven.plugin.logging.Log
private boolean
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate String
buildConvergenceErrorMsg
(List<org.apache.maven.shared.dependency.graph.DependencyNode> nodeList) private StringBuilder
buildTreeString
(org.apache.maven.shared.dependency.graph.DependencyNode node) void
execute
(EnforcerRuleHelper helper) This is the interface into the rule.If your rule is cacheable, you must return a unique id when parameters or conditions change that would cause the result to be different.getConvergenceErrorMsgs
(List<List<org.apache.maven.shared.dependency.graph.DependencyNode>> errors) private String
getFullArtifactName
(org.apache.maven.artifact.Artifact artifact) private org.apache.maven.shared.dependency.graph.DependencyNode
getNode
(EnforcerRuleHelper helper) Uses theEnforcerRuleHelper
to populate the values of theDependencyTreeBuilder#buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource, ArtifactFilter, ArtifactCollector)
factory method.boolean
This tells the system if the results are cacheable at all.boolean
isResultValid
(EnforcerRule rule) If the rule is cacheable and the same id is found in the cache, the stored results are passed to this method to allow double checking of the results.void
setUniqueVersions
(boolean uniqueVersions)
-
Field Details
-
log
private static org.apache.maven.plugin.logging.Log log -
i18n
private static org.codehaus.plexus.i18n.I18N i18n -
uniqueVersions
private boolean uniqueVersions
-
-
Constructor Details
-
DependencyConvergence
public DependencyConvergence()
-
-
Method Details
-
setUniqueVersions
public void setUniqueVersions(boolean uniqueVersions) -
getNode
private org.apache.maven.shared.dependency.graph.DependencyNode getNode(EnforcerRuleHelper helper) throws EnforcerRuleException Uses theEnforcerRuleHelper
to populate the values of theDependencyTreeBuilder#buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource, ArtifactFilter, ArtifactCollector)
factory method.
This method simply exists to hide all the ugly lookup that theEnforcerRuleHelper
has to do.- Parameters:
helper
-- Returns:
- a Dependency Node which is the root of the project's dependency tree
- Throws:
EnforcerRuleException
-
execute
Description copied from interface:EnforcerRule
This is the interface into the rule. This method should throw an exception containing a reason message if the rule fails the check. The plugin will then decide based on the fail flag if it should stop or just log the message as a warning.- Specified by:
execute
in interfaceEnforcerRule
- Parameters:
helper
- The helper provides access to the log, MavenSession and has helpers to get common components. It is also able to lookup components by class name.- Throws:
EnforcerRuleException
- the enforcer rule exception
-
getFullArtifactName
-
getConvergenceErrorMsgs
-
buildConvergenceErrorMsg
-
getCacheId
If your rule is cacheable, you must return a unique id when parameters or conditions change that would cause the result to be different. Multiple cached results are stored based on their id. The easiest way to do this is to return a hash computed from the values of your parameters. If your rule is not cacheable, then the result here is not important, you may return anything.- Specified by:
getCacheId
in interfaceEnforcerRule
- Returns:
- id to be used by the enforcer to determine uniqueness of cache results. The ids only need to be unique within a given rule implementation as the full key will be [classname]-[id]
-
isCacheable
public boolean isCacheable()This tells the system if the results are cacheable at all. Keep in mind that during forked builds and other things, a given rule may be executed more than once for the same project. This means that even things that change from project to project may still be cacheable in certain instances.- Specified by:
isCacheable
in interfaceEnforcerRule
- Returns:
true
if rule is cacheable
-
isResultValid
If the rule is cacheable and the same id is found in the cache, the stored results are passed to this method to allow double checking of the results. Most of the time this can be done by generating unique ids, but sometimes the results of objects returned by the helper need to be queried. You may for example, store certain objects in your rule and then query them later.- Specified by:
isResultValid
in interfaceEnforcerRule
- Parameters:
rule
-- Returns:
true
if the stored results are valid for the same id.
-