Skip to content

Fix mvnup effective model analysis for CI-friendly parent versions#12205

Open
gnodet wants to merge 1 commit into
masterfrom
fix/revision-parent-version
Open

Fix mvnup effective model analysis for CI-friendly parent versions#12205
gnodet wants to merge 1 commit into
masterfrom
fix/revision-parent-version

Conversation

@gnodet
Copy link
Copy Markdown
Contributor

@gnodet gnodet commented Jun 2, 2026

Summary

  • Eliminate temp directory in PluginUpgradeStrategy — build effective models from original file paths instead of copying POMs to a temp directory that lacked .mvn for root detection
  • Fix DefaultModelBuilder.doReadFileModel() to handle ${revision} parent versions: enter parent resolution block for expression versions, skip isParentWithinRootDirectory when root directory is a fallback guess, and accept parent version match when version contains an expression
  • Add unit test, integration test, and fix existing PluginUpgradeStrategyTest

Fixes the "Parent POM is located above the root directory" error that occurred in mvnup apply for all CI-friendly projects using ${revision} (bigtop-manager, guacamole-client, hbase-connectors, logging-log4j-samples).

Test plan

  • DefaultModelBuilderTest — 7 tests pass (including new testCiFriendlyVersion)
  • PluginUpgradeStrategyTest — 27 tests pass (including fixed shouldDetectInheritedPluginsFromRemoteParent)
  • MavenITgh12184CIFriendlyParentVersionTest — 2 ITs pass (property from POM, property from CLI)
  • Existing CI-friendly ITs pass (MavenITgh11196CIFriendlyProfilesTest, MavenITmng8744CIFriendlyTest)
  • mvnup apply on all 4 affected projects produces no "parent above root" errors

🤖 Generated with Claude Code

mvnup's PluginUpgradeStrategy copied POMs to a temp directory for
effective model analysis. That temp directory lacked .mvn, so root
detection failed for child modules with ${revision} parent versions,
producing "Parent POM is located above the root directory" errors.

Eliminate the temp directory entirely — build effective models from
the original file paths, which already have proper .mvn and project
structure for root detection.

Also fix DefaultModelBuilder.doReadFileModel() to:
- Enter the parent resolution block when parent version contains
  expressions (${revision}, etc.)
- Only enforce isParentWithinRootDirectory when rootDirectory came
  from the session, not the fallback heuristic
- Accept parent version match when version contains an expression

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
gnodet added a commit that referenced this pull request Jun 2, 2026
…#12205)

Cherry-pick from fix/revision-parent-version branch.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@gnodet gnodet added this to the 4.0.0-rc-6 milestone Jun 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants