Maven: Resolve artifactId properties before downloading versions #4404
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What's changed?
Support changing managed maven dependencies with artifactIds that include properties.
What's your motivation?
Jenkins has moved to a model where a bom is now defined like
This breaks the org.openrewrite.jenkins.ModernizePlugin recipe. Attempting to use an artifactId with a property fails to resolve:
jenkinsci/archetypes#737
Anyone you would like to review specifically?
@timtebeek and I briefly talked about this on OSS Slack.
Have you considered any alternatives or workarounds?
I made an attempt to fix this in the
MavenPomDownloader
in sghill@941e1ee. It didn't work because the set of resolved poms through this codepath is always empty.Since this is valid maven, I think it'd be nice if this were universally supported instead of just fixed in this one recipe. I'm not quite sure how to go about making it more universal.
Any additional context
This is more for discussion than an implementation I feel strongly about. My ideal end state is for the
ModernizePlugin
recipe to compose these building blocks to extract ajenkins.baseline
property and use it in multiple places, just like the updated plugin archetype.Checklist