Skip to content

Add integration test for recursive project.url variable reference (GH-11074)#11075

Closed
gnodet wants to merge 5154 commits intomaven-3.9.xfrom
feature/gh-11074-recursive-project-url-it
Closed

Add integration test for recursive project.url variable reference (GH-11074)#11075
gnodet wants to merge 5154 commits intomaven-3.9.xfrom
feature/gh-11074-recursive-project-url-it

Conversation

@gnodet
Copy link
Copy Markdown
Contributor

@gnodet gnodet commented Aug 28, 2025

Description

This PR adds an integration test for GH-11074 that demonstrates the behavior difference between Maven 3 and Maven 4 when handling recursive variable references in project.url.

Changes

  • New Integration Test: MavenITgh11074RecursiveProjectUrlTest.java
  • Test Resources: Two test scenarios with supporting files

Test Scenarios

1. Direct Recursive Reference (Local Project Build)

  • Location: gh-11074-recursive-project-url/
  • Test: POM with <url>${project.url}</url>
  • Expected: Both Maven 3 and 4 fail with "recursive variable reference: project.url"
  • Purpose: Confirms both versions correctly reject building projects with recursive references

2. Dependency Recursive Reference (Pre-built Artifact Consumption)

  • Location: gh-11074-recursive-project-url-dependency/
  • Test: Consumer project depending on pre-built artifact with recursive project.url
  • Expected:
    • Maven 4: Shows warning about invalid POM but continues build
    • Maven 3: May silently ignore the issue (no warning)
  • Purpose: Demonstrates the key difference in dependency POM validation

Key Insight

The real difference between Maven 3 and 4 is not in building projects with recursive references (both fail), but in how they handle pre-built artifacts with recursive references when consumed as dependencies:

  • Maven 4: Detects and warns about recursive references in dependency POMs
  • Maven 3: May silently ignore these issues in dependency POMs

Verification

Both test scenarios have been manually verified:

# Direct recursive reference - Both Maven 3 and 4 fail
$ cd its/core-it-suite/src/test/resources/gh-11074-recursive-project-url
$ mvn validate
[ERROR] recursive variable reference: project.url

# Dependency recursive reference - Maven 4 warns, Maven 3 silent
$ cd its/core-it-suite/src/test/resources/gh-11074-recursive-project-url-dependency
$ mvn validate -s settings-template.xml
# Maven 4:
[WARNING] The POM for org.apache.maven.its.gh11074:bad-dependency:jar:1.0 is invalid
    - [ERROR] recursive variable reference: project.url
[INFO] BUILD SUCCESS

# Maven 3: (no warning about recursive reference)
[INFO] BUILD SUCCESS

Real-world Impact

This test reproduces the behavior observed with dependencies like com.slack.api:slack-api-client:jar:1.45.4 which contain recursive references in their POMs. These artifacts were published to repositories despite having recursive references, and Maven 4's improved validation now detects and warns about these issues during dependency resolution.

Related

gnodet and others added 30 commits March 28, 2025 13:31
JIRA issue: [MNG-5668](https://issues.apache.org/jira/browse/MNG-5668)

When a build step fails, Maven should still execute its corresponding after:* phases to ensure proper cleanup. This fix modifies the BuildPlanExecutor to:

- Execute after:* phases when their corresponding before:* phase has been executed
- Maintain proper phase ordering during failure handling
- Handle cleanup phase failures gracefully without affecting the original error
- Preserve concurrent build capabilities

This ensures cleanup tasks (like resource cleanup or test environment teardown) are properly executed even when the build fails.
Fixes the existing 'all' phase and introduces a new 'each' phase to better support 
hierarchical builds and concurrent execution:

- 'all': Properly coordinates execution across parent-child project hierarchies
- 'each': A new phase that executes for each individual project in isolation

Key changes:
- Enhanced BuildPlanExecutor to properly handle parent-child relationships in phases
- Added new children() pointer type for explicit phase dependencies
- Improved phase dependency management to ensure:
  - Parent's before:all executes before children's phases
  - Children's after:all executes before parent's after:all
  - Each project's phases execute in isolation within the 'each' phase
- Added comprehensive documentation to BuildPlanExecutor
- Added integration test to verify hierarchical phase execution

This commit also fixes thread-safety issues in concurrent builds:
- Added synchronization to ReactorReader for project operations
- Improved thread-safety for project-level clean and install operations
- Enhanced build step state management in concurrent scenarios

Fixes: MNG-8653
…onfig (#2194)

Added support for substituting  and
in .mvn/jvm.config with the actual project base directory.

Changes:
- Modified mvn and mvn.cmd scripts to handle the substitution
- Added integration test to verify the functionality

The test verifies:
- Both curly brace and simple syntax variants work
- Substitution happens correctly in forked JVM
- Feature is available in Maven 4.0+
Add links to configuring.html and maven-configuration.html in the main index page to improve documentation navigation and discoverability of configuration options.
* minor cleanups
Bumps `asmVersion` from 9.7.1 to 9.8.

Updates `org.ow2.asm:asm` from 9.7.1 to 9.8

Updates `org.ow2.asm:asm-commons` from 9.7.1 to 9.8

Updates `org.ow2.asm:asm-util` from 9.7.1 to 9.8

---
updated-dependencies:
- dependency-name: org.ow2.asm:asm
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.ow2.asm:asm-commons
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.ow2.asm:asm-util
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Make subproject maven-cli use "outer" Mimir (if used): This locally cuts UT runtime from 10+ sec to 2+ sec.
Same thing for maven-executor.

The maven-cli redirects user home "lightly" (only invoker req), while maven-executor does same thing (fully redirects) as Maven ITs hence it needs a property file as well to point it at real Mimir Daemon socket.
We do not utilize LAN sharing on CI, caches are "local" only. 
Also, as can be seen, Jgroups may fail to start on Windoze.
Bumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.17.4 to 1.17.5.
- [Release notes](https://github.com/raphw/byte-buddy/releases)
- [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md)
- [Commits](raphw/byte-buddy@byte-buddy-1.17.4...byte-buddy-1.17.5)

---
updated-dependencies:
- dependency-name: net.bytebuddy:byte-buddy
  dependency-version: 1.17.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

---

https://issues.apache.org/jira/browse/MNG-8668
…ts (#2213)

The .mvn/jvm.config file parsing in mvn.cmd needed improvements to properly handle multiple JVM arguments, especially when dealing with comments, quotes and spaces in values.

This PR:
- Ensures proper parsing of multiple JVM arguments from .mvn/jvm.config
- Maintains proper spacing between arguments
- Handles both inline and full-line comments correctly
- Fixes a bug in the space trimming logic (%%x -> %%i)
- Preserves spaces within quoted values

The changes are validated by MavenITmng4559MultipleJvmArgsTest which verifies:
- Multiple JVM arguments are properly handled
- Comments are correctly processed
- Arguments with spaces in quotes are preserved
- Arguments from multiple lines are properly combined

Fixes: https://issues.apache.org/jira/browse/MNG-4559
The only spot where trace was set but not context, all
the rest of the spots were checked and are ok.

---

https://issues.apache.org/jira/browse/MNG-8669
Bumps [org.jacoco:jacoco-maven-plugin](https://github.com/jacoco/jacoco) from 0.8.12 to 0.8.13.
- [Release notes](https://github.com/jacoco/jacoco/releases)
- [Commits](jacoco/jacoco@v0.8.12...v0.8.13)

---
updated-dependencies:
- dependency-name: org.jacoco:jacoco-maven-plugin
  dependency-version: 0.8.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
- Add missing class-level and method-level Javadoc to various classes in api/ subprojects
- Add missing type parameter Javadoc to parameterized classes
- Fix Javadoc errors by escaping angle brackets in code examples
- Fix Javadoc reference errors in TypeRegistry
- Remove cross-module references in TypeRegistry Javadoc
- Enhance javadoc for Config.Source enum to clarify when properties are evaluated
- Add missing package-info.java for org.apache.maven.di.tool package
- Enhance existing package-info.java files with more detailed documentation
- Ensure consistent Javadoc style across the API
The legacy prompter should only use the Prompter interface, not the DefaultPrompter implementaiton,
so that the Maven daemon can override how prompting is implemented.

See apache/maven-mvnd#1303
Source hint should tell what it is: GAV? GATC? Anything else?
Especially the GAV and GATC are prone to be mixed by humans
when trying to decipher error message.

---

https://issues.apache.org/jira/browse/MNG-8676
* [MNG-8637] Pull out Standalone API from UTs

This commit moves the Standalone API implementation from the test directory to the main source directory, making it available for reuse outside of tests.

The Standalone API provides a way to run Maven API in a standalone mode (without the full Maven environment), primarily for testing and specialized execution scenarios. This is now the proper way to utilize Maven 4 in MIMA-like scenarios.

Key changes:
- Moved ApiRunner and RepositorySystemSupplier from test to main source
- Added UnsupportedInStandaloneModeException for operations not supported in standalone mode
- Added package-info.java with documentation for the standalone package

* [MNG-8637] Fix Javadoc HTML structure in package-info.java

* Move back transports to test scope
* Remove methods that duplicate superclass methods
To not go blindly for file.
dependabot bot and others added 25 commits July 31, 2025 05:53
…11013)

Bumps [eu.maveniverse.maven.plugins:bom-builder3](https://github.com/maveniverse/bom-builder-maven-plugin) from 1.1.1 to 1.2.0.
- [Release notes](https://github.com/maveniverse/bom-builder-maven-plugin/releases)
- [Commits](maveniverse/bom-builder-maven-plugin@release-1.1.1...release-1.2.0)

---
updated-dependencies:
- dependency-name: eu.maveniverse.maven.plugins:bom-builder3
  dependency-version: 1.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…riptorReader (#10938)

The ArtifactDescriptorReaderDelegate was marked as 'work in progress' and
could be 'changed or removed without notice'. This change consolidates its
functionality directly into DefaultArtifactDescriptorReader by:

- Moving all delegate methods as private methods in DefaultArtifactDescriptorReader
- Removing the unused extension mechanism via session config properties
- Simplifying the codebase by removing unnecessary abstraction
- Maintaining identical functionality for normal usage

The compat module retains the original delegate pattern for backward compatibility
since it's already deprecated and marked for removal in 4.0.0.

If a proper extension point is needed in the future, it can be designed more
explicitly with proper interfaces and documentation.

Also fixes maven.config to be compatible with Maven 3.6.x by removing comment
that causes parsing errors in older Maven versions.
Fixes #10995

The SmartProjectComparator.getProjectWeight() method was using
ConcurrentHashMap.computeIfAbsent() in a recursive context, which
could lead to IllegalStateException: Recursive update when calculating
project weights in complex dependency graphs or concurrent scenarios.

Changes:
- Replace computeIfAbsent() with explicit get() + putIfAbsent() pattern
- Eliminate recursive calls to computeIfAbsent() that violate
  ConcurrentHashMap's internal constraints
- Maintain thread safety using putIfAbsent() for concurrent access
- Add comprehensive test case to verify the fix under concurrent load

The fix preserves all existing functionality while eliminating the
recursive update exception that could occur during parallel builds
of large multi-module projects.
Bumps `jlineVersion` from 3.30.4 to 3.30.5.

Updates `org.jline:jline-reader` from 3.30.4 to 3.30.5
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@jline-3.30.4...3.30.5)

Updates `org.jline:jline-style` from 3.30.4 to 3.30.5
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@jline-3.30.4...3.30.5)

Updates `org.jline:jline-builtins` from 3.30.4 to 3.30.5
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@jline-3.30.4...3.30.5)

Updates `org.jline:jline-console` from 3.30.4 to 3.30.5
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@jline-3.30.4...3.30.5)

Updates `org.jline:jline-console-ui` from 3.30.4 to 3.30.5
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@jline-3.30.4...3.30.5)

Updates `org.jline:jline-terminal` from 3.30.4 to 3.30.5
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@jline-3.30.4...3.30.5)

Updates `org.jline:jline-terminal-ffm` from 3.30.4 to 3.30.5
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@jline-3.30.4...3.30.5)

Updates `org.jline:jline-terminal-jni` from 3.30.4 to 3.30.5
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@jline-3.30.4...3.30.5)

Updates `org.jline:jline-native` from 3.30.4 to 3.30.5
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@jline-3.30.4...3.30.5)

Updates `org.jline:jansi-core` from 3.30.4 to 3.30.5
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@jline-3.30.4...3.30.5)

---
updated-dependencies:
- dependency-name: org.jline:jline-reader
  dependency-version: 3.30.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.jline:jline-style
  dependency-version: 3.30.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.jline:jline-builtins
  dependency-version: 3.30.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.jline:jline-console
  dependency-version: 3.30.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.jline:jline-console-ui
  dependency-version: 3.30.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.jline:jline-terminal
  dependency-version: 3.30.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.jline:jline-terminal-ffm
  dependency-version: 3.30.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.jline:jline-terminal-jni
  dependency-version: 3.30.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.jline:jline-native
  dependency-version: 3.30.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
- dependency-name: org.jline:jansi-core
  dependency-version: 3.30.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* [MNG-5102] Add support for POM mixins

This commit implements Maven Mixins, a powerful mechanism for sharing
common POM configuration across multiple projects without the limitations
of traditional inheritance.

Key features:
- Compose project configuration from multiple sources
- Overcome single inheritance limitation
- Reduce configuration duplication
- Enable better separation of concerns

Changes include:
- New model version 4.2.0 support for mixins
- Mixin and mixinManagement elements in POM model
- Mixin resolution and composition logic
- Integration with existing inheritance system
- Comprehensive documentation and examples
- Maven 3 compatibility fixes for maven.config

The implementation allows projects to declare mixins that are resolved
and merged in order, with later mixins overriding earlier ones, and
the current POM having final precedence.
Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.27.3 to 3.27.4.
- [Release notes](https://github.com/assertj/assertj/releases)
- [Commits](assertj/assertj@assertj-build-3.27.3...assertj-build-3.27.4)

---
updated-dependencies:
- dependency-name: org.assertj:assertj-core
  dependency-version: 3.27.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [org.apache.maven:maven-archiver](https://github.com/apache/maven-archiver) from 3.6.3 to 3.6.4.
- [Release notes](https://github.com/apache/maven-archiver/releases)
- [Commits](apache/maven-archiver@maven-archiver-3.6.3...maven-archiver-3.6.4)

---
updated-dependencies:
- dependency-name: org.apache.maven:maven-archiver
  dependency-version: 3.6.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
As build takes a long time when a new commit is pushed,
we should cancel previous build and build only the last one.
…11037)

On parent loading, the repositories were interpolated okay, but there was a problem that parent own properties were not considered in interpolation (of own repositories).

Fixes #11021
Bumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.17.6 to 1.17.7.
- [Release notes](https://github.com/raphw/byte-buddy/releases)
- [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md)
- [Commits](raphw/byte-buddy@byte-buddy-1.17.6...byte-buddy-1.17.7)

---
updated-dependencies:
- dependency-name: net.bytebuddy:byte-buddy
  dependency-version: 1.17.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps `mockitoVersion` from 5.18.0 to 5.19.0.

Updates `org.mockito:mockito-bom` from 5.18.0 to 5.19.0
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](mockito/mockito@v5.18.0...v5.19.0)

Updates `org.mockito:mockito-junit-jupiter` from 5.18.0 to 5.19.0
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](mockito/mockito@v5.18.0...v5.19.0)

---
updated-dependencies:
- dependency-name: org.mockito:mockito-bom
  dependency-version: 5.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.mockito:mockito-junit-jupiter
  dependency-version: 5.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [org.codehaus.plexus:plexus-testing](https://github.com/codehaus-plexus/plexus-testing) from 1.5.0 to 1.6.0.
- [Release notes](https://github.com/codehaus-plexus/plexus-testing/releases)
- [Commits](codehaus-plexus/plexus-testing@plexus-testing-1.5.0...plexus-testing-1.6.0)

---
updated-dependencies:
- dependency-name: org.codehaus.plexus:plexus-testing
  dependency-version: 1.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4.7.1 to 5.0.0.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](actions/setup-java@c5195ef...dded088)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.3.0 to 5.0.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@d3f86a1...634f93c)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/cache](https://github.com/actions/cache) from 4.2.3 to 4.2.4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@5a3ec84...0400d5f)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 4.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 5.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@11bd719...08c6903)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [commons-cli:commons-cli](https://github.com/apache/commons-cli) from 1.9.0 to 1.10.0.
- [Changelog](https://github.com/apache/commons-cli/blob/master/RELEASE-NOTES.txt)
- [Commits](apache/commons-cli@rel/commons-cli-1.9.0...rel/commons-cli-1.10.0)

---
updated-dependencies:
- dependency-name: commons-cli:commons-cli
  dependency-version: 1.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…11065)

Bumps [eu.maveniverse.maven.plugins:bom-builder3](https://github.com/maveniverse/bom-builder-maven-plugin) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/maveniverse/bom-builder-maven-plugin/releases)
- [Commits](maveniverse/bom-builder-maven-plugin@release-1.2.0...release-1.2.1)

---
updated-dependencies:
- dependency-name: eu.maveniverse.maven.plugins:bom-builder3
  dependency-version: 1.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Simplify prefix resolution and drop use of BuildPluginManager (as descriptor will be re-resolved again later) and focus only on prefix to GA resolution, using a map of rules:
* collect POM enlisted plugin groupId:artifactId pairs that come from non-settings-enlisted groupIDs (and allow only enlisted artifactIDs)
* add settings enlisted plugin groupIds (keep their order) but "allow any" artifactId

Using this map, figure out plugin GA from prefix using Maven metadata only.

Fixes #11067
…-11074)

This integration test demonstrates the behavior difference between Maven 3 and Maven 4
when handling recursive variable references in project.url.

- Direct recursive reference: Maven 4 fails with 'recursive variable reference: project.url'
- Dependency recursive reference: Maven 4 shows warning but continues build

Relates to: #11074
Both Maven 3 and 4 correctly fail when building projects with recursive
variable references. The key difference is in dependency consumption:

- Maven 4: Warns about invalid dependency POMs with recursive references
- Maven 3: May silently ignore the issue in dependency POMs

Updated test expectations and documentation to reflect this correct understanding.
@gnodet gnodet force-pushed the feature/gh-11074-recursive-project-url-it branch from b34c8de to e142e32 Compare August 28, 2025 20:05
@gnodet gnodet closed this Aug 29, 2025
@slawekjaranowski
Copy link
Copy Markdown
Member

@gnodet do you need a branch as PR is closed?

@slawekjaranowski slawekjaranowski deleted the feature/gh-11074-recursive-project-url-it branch April 10, 2026 17:34
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.