Class DeduplicateDependenciesStrategy
- All Implemented Interfaces:
UpgradeStrategy
Maven 4 rejects duplicate <dependency> entries (same groupId, artifactId,
type, and classifier) that Maven 3 silently accepted. This strategy scans each POM's
<dependencies> and <dependencyManagement>/<dependencies> sections and
removes duplicates using last-wins semantics (keeping the last declaration). Note that
Maven 3's dependency resolver uses first-wins for same-depth conflicts; last-wins is
chosen here intentionally so the most recently added (and presumably most up-to-date)
declaration is preserved.
The strategy also handles duplicate <plugin> entries in <plugins>
and <pluginManagement>/<plugins> sections with the same last-wins semantics
(which does match Maven 3's plugin configuration merging behavior).
Profile-scoped dependency and plugin sections are processed as well.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected UpgradeResultdoApply(UpgradeContext context, Map<Path, eu.maveniverse.domtrip.Document> pomMap) Subclasses implement the actual upgrade logic here.Gets a description of what this strategy does.booleanisApplicable(UpgradeContext context) Checks if this strategy is applicable given the current options.Methods inherited from class AbstractUpgradeStrategy
apply, buildEffectiveModel, cleanupTempDirectory, computeAllArtifactCoordinates, createTempProjectStructure, extractArtifactCoordinatesWithParentResolution, findCommonRoot, getOptions, getSession, logSummaryMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface UpgradeStrategy
isOptionEnabled
-
Constructor Details
-
DeduplicateDependenciesStrategy
public DeduplicateDependenciesStrategy()
-
-
Method Details
-
isApplicable
Description copied from interface:UpgradeStrategyChecks if this strategy is applicable given the current options.- Parameters:
context- the upgrade context- Returns:
- true if this strategy should be applied
-
getDescription
Description copied from interface:UpgradeStrategyGets a description of what this strategy does.- Returns:
- a human-readable description of the strategy
-
doApply
protected UpgradeResult doApply(UpgradeContext context, Map<Path, eu.maveniverse.domtrip.Document> pomMap) Description copied from class:AbstractUpgradeStrategySubclasses implement the actual upgrade logic here.- Specified by:
doApplyin classAbstractUpgradeStrategy- Parameters:
context- the upgrade contextpomMap- map of all POM files in the project- Returns:
- the result of the upgrade operation
-