rewrite icon indicating copy to clipboard operation
rewrite copied to clipboard

RemoveRedundantDependencyVersions for Plugins

Open nmck257 opened this issue 1 year ago • 1 comments

What problem are you trying to solve?

Like dependencies, plugins can also have redundant versions when compared to the pluginManagement. But, RemoveRedundantDependencyVersions only touches dependencies.

What precondition(s) should be checked before applying this recipe?

Can't think of any

Describe the situation before applying the recipe

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.sample</groupId>
    <artifactId>sample</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.18</version>
        <relativePath/>
    </parent>
    <build>
        <plugins>
            <plugin>
                <groupId>pl.project13.maven</groupId>
                <artifactId>git-commit-id-plugin</artifactId>
                <version>4.9.10</version>
            </plugin>
        </plugins>
    </build>
</project>

Describe the situation after applying the recipe

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.sample</groupId>
    <artifactId>sample</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.18</version>
        <relativePath/>
    </parent>
    <build>
        <plugins>
            <plugin>
                <groupId>pl.project13.maven</groupId>
                <artifactId>git-commit-id-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

Have you considered any alternatives or workarounds?

Implementation options could include:

  • Add this to RemoveRedundantDependencyVersions
  • Same as above, but with an arg to control the plugin-handling behavior
    • Choice about whether to default the behavior to on or off
  • Create a new, separate RemoveRedundantPluginVersions

I'd vote for adding it to RemoveRedundantDependencyVersions, active by default, with a new optional arg to disable checking plugins.

Any additional context

Are you interested in contributing this recipe to OpenRewrite?

I might; priority TBA. This might also be a good first issue for someone else.

nmck257 avatar Jan 17 '24 16:01 nmck257

Good suggestion indeed! I'd also opt to add it to the existing RemoveRedundantDependencyVersions.

timtebeek avatar Jan 17 '24 17:01 timtebeek