Remove stale maven.compiler.source/target properties after release replacement#7315
Draft
Remove stale maven.compiler.source/target properties after release replacement#7315
Conversation
…placement Convert UseMavenCompilerPluginReleaseConfiguration from Recipe to ScanningRecipe so it can detect and remove maven.compiler.source/maven.compiler.target properties that become unused after source/target is replaced with release. Fixes openrewrite/rewrite-migrate-java#668
…property cleanup When test sources use a different Java version than main sources, introduce <testRelease> to preserve the higher version. Also clean up stale maven.compiler.testSource/testTarget properties when <release> or <testRelease> is configured.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Converts
UseMavenCompilerPluginReleaseConfigurationfromRecipetoScanningRecipeso it can removemaven.compiler.source/maven.compiler.targetproperties that become unused after<source>/<target>is replaced with<release>The scanner tracks
${maven.compiler.source/target}references and which POMs have<release>configured; the visitor removes properties only when they have no remaining references and<release>is presentProperties are preserved when referenced by other plugins or when no compiler plugin exists
Fixes UpgradeJavaVersion leaves behind stale unused properties rewrite-migrate-java#668
Test plan
removesStaleSourceTargetProperties— main issue scenario (properties referenced by source/target, both removed after release replacement)removesImplicitlyStaleProperties— hardcoded source/target with unreferenced propertieskeepsPropertiesWhenReferencedElsewhere— properties stay when used by other pluginskeepsPropertiesWithoutCompilerPlugin— properties stay when no compiler plugin exists