Class DuplicateElementStrategy
- All Implemented Interfaces:
UpgradeStrategy
Maven 4's stricter POM parser rejects duplicate XML elements (such as
<artifactId>, <properties>, <version>, etc.) that
Maven 3 silently accepted using last-wins semantics. This strategy scans
each POM element's children and removes duplicates, keeping only the last
occurrence of each element name.
This strategy only targets "scalar" elements at well-known POM schema
positions — elements that should appear at most once within their parent
according to the Maven POM schema. Elements inside list containers
(e.g., <dependency> inside <dependencies>,
<plugin> inside <plugins>) are not affected by this strategy
since duplicate dependencies and plugins are handled by
DeduplicateDependenciesStrategy.
Plugin <configuration> elements are skipped entirely, because they
contain free-form, plugin-specific XML whose schema is not known to this tool.
Treating same-named children as duplicates in configuration sections (e.g.,
multiple <arg> entries inside <compilerArgs>) would silently
remove valid list entries and break builds.
- See Also:
-
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 org.apache.maven.cling.invoker.mvnup.goals.AbstractUpgradeStrategy
apply, buildEffectiveModel, cleanupTempDirectory, computeAllArtifactCoordinates, createTempProjectStructure, extractArtifactCoordinatesWithParentResolution, findCommonRoot, getOptions, getSession, logSummaryMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.maven.cling.invoker.mvnup.goals.UpgradeStrategy
isOptionEnabled
-
Constructor Details
-
DuplicateElementStrategy
public DuplicateElementStrategy()
-
-
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
-