Class AbstractDependencyManager

java.lang.Object
org.eclipse.aether.util.graph.manager.AbstractDependencyManager
All Implemented Interfaces:
org.eclipse.aether.collection.DependencyManager
Direct Known Subclasses:
ClassicDependencyManager, DefaultDependencyManager, TransitiveDependencyManager

public abstract class AbstractDependencyManager extends Object implements org.eclipse.aether.collection.DependencyManager
A dependency manager support class.

This implementation is Maven specific, as it works hand-in-hand along with Maven ModelBuilder. While model builder handles dependency management in the context of single POM (inheritance, imports, etc.), this implementation carries in-lineage modifications based on previously recorded dependency management rules sourced from ascendants while building the dependency graph. Root sourced management rules are special, in a way they are always applied, while en-route collected ones are carefully applied to proper descendants only, to not override work done by model builder already.

Details: Model builder handles version, scope from own dependency management (think "effective POM"). On the other hand it does not handle optional for example. System paths are aligned across whole graph, making sure there is same system path used by same dependency. Finally, exclusions (exclusions are additional information not effective or applied in same POM) are always applied. This implementation makes sure, that version and scope are not applied onto same node that actually provided the rules, to no override work that ModelBuilder did. It achieves this goal by tracking "depth" for each collected rule and ignoring rules coming from same depth as processed dependency node is.

Since:
2.0.0