Skip to content

Re-enable MNG-1088 IT: concurrent builder correctly handles reactor plugins - #13222

Open
gnodet wants to merge 1 commit into
apache:masterfrom
gnodet:fix/mng-1088-re-enable-reactor-plugin-it
Open

gnodet wants to merge 1 commit into
apache:masterfrom
gnodet:fix/mng-1088-re-enable-reactor-plugin-it

Conversation

@gnodet

@gnodet gnodet commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Summary

Re-enable MavenITmng1088ReactorPluginResolutionTest, which was disabled pending the concurrent builder work (MNG-7977).

Background

MNG-1088 covers the case where a plugin is built and used within the same multiproject build. In Maven 3, this worked via a fallback: if the plugin's JAR hadn't been produced yet, Maven would resolve it from the repository. This fallback was fragile and could cause inconsistencies (MNG-7977).

How the Concurrent Builder Fixes This

Maven 4's BuildPlanExecutor handles this correctly in computePlan():

// If a project declares a plugin that is itself part of the reactor,
// require the plugin project to reach 'ready' before planning the consumer
MavenProject pluginProject = reactorGavs.get(gav(plugin));
if (pluginProject != null) {
    plan.requiredStep(project, PLAN).executeAfter(plan.requiredStep(pluginProject, READY));
}

The ready phase sits after compile and resources, so the plugin's classes are compiled and packaged before the consuming project is planned and executed — regardless of which lifecycle phase the user requested on the command line.

Verification

IT passes against 4.0.0-SNAPSHOT:

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
Time elapsed: 9.579 s -- in org.apache.maven.it.MavenITmng1088ReactorPluginResolutionTest
BUILD SUCCESS

The test description is updated to reflect the Maven 4 semantics (proper scheduling via the concurrent build plan, rather than fallback to repository resolution).


Hermes Agent (Claude Sonnet 4.6) on behalf of Guillaume Nodet

@gnodet
gnodet force-pushed the fix/mng-1088-re-enable-reactor-plugin-it branch from d778d4c to 18b35f2 Compare September 21, 2026 08:54
…r handles it correctly

MNG-7977 (closed/fixed) introduced the concurrent builder which properly
schedules reactor-internal plugins: the plugin project is built up to the
'ready' phase before the consuming project is planned.

This commit re-enables MavenITmng1088ReactorPluginResolutionTest and
reworks it to actually test the concurrent builder feature:

- Use 'mvn package -b concurrent' (explicit concurrent builder, no fallback)
- No pre-built plugin jar in a local repo — the plugin is compiled from
  source within the same reactor build
- Update the plugin to use Maven 4 API (maven-plugin-api 4.1.0-SNAPSHOT)
  and POM model 4.1.0
- Remove the old 'repo/' directory (Maven 3 fallback, no longer needed)
- Bind the touch goal to the 'package' phase (was 'initialize')

Verified passing locally against maven-4.1.0-SNAPSHOT.
@gnodet
gnodet force-pushed the fix/mng-1088-re-enable-reactor-plugin-it branch from 18b35f2 to 3878fba Compare September 21, 2026 11:38
@gnodet
gnodet marked this pull request as ready for review September 21, 2026 12:47
@gnodet gnodet added this to the 4.1.0 milestone Sep 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant