Skip to content

Fix Maven 4 @Resolution injection in generated plugin descriptors - #1234

Open
goutamadwant wants to merge 1 commit into
apache:masterfrom
goutamadwant:fix/resolution-descriptor-1230
Open

goutamadwant wants to merge 1 commit into
apache:masterfrom
goutamadwant:fix/resolution-descriptor-1230

Conversation

@goutamadwant

Copy link
Copy Markdown

Fixes #1230.

A Maven 4 mojo can declare an @Resolution field, but Plugin Tools currently omits it from plugin.xml. Maven then leaves the field null even when the project has matching dependencies.

This change carries the annotated field, pathScope, and requestType through scanning and descriptor generation, including fields inherited from a superclass. It writes <resolutions> only for Maven 4 descriptors. The v4api-4x integration test checks the generated XML and runs a mojo with direct and inherited resolution fields against a real compile dependency.

Validation:

  • On unmodified master with Maven 4.0.0-rc-7, the plugin builds, but the descriptor has no <resolutions> and goal execution fails because the compile dependency was not injected.
  • The targeted v4api-4x integration test passes with Maven 4.0.0-rc-7 after the fix.
  • mvn -Prun-its verify passes with Maven 3.9.16 and JDK 21: 32 plugin integration tests pass, one Maven 4 fixture is skipped under Maven 3, and 12 plugin-report integration tests pass.
  • git diff --check passes.

To make clear that you license your contribution under the Apache License Version 2.0, January 2004, check one of the following:

Carry resolution annotations through the scanner and descriptor model, then write their field, path scope, and request type to Maven 4 plugin.xml. Extend the Maven 4 integration test to execute a mojo with direct and inherited resolution fields and a real compile dependency.
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.

@Resolution fields stay null: plugin.xml gets no <resolutions>

1 participant