rewrite icon indicating copy to clipboard operation
rewrite copied to clipboard

org.openrewrite.gradle.AddDependency ignores acceptTransitive option

Open oQue opened this issue 2 weeks ago • 2 comments

What version of OpenRewrite are you using?

I am using

  • Gradle plugin v7.13.0
  • org.openrewrite.recipe:rewrite-recipe-bom:3.19.0
  • org.openrewrite.recipe:rewrite-spring (6.19.0 from bom)

How are you running OpenRewrite?

I am using the Gradle plugin, and my project is a single module project.

rewrite {
    activeRecipe(
        "org.mycompany.Recipe"
    )
}

What is the smallest, simplest way to reproduce the problem?

type: specs.openrewrite.org/v1beta/recipe
name: org.mycompany.Recipe
displayName: Test Recipe
recipeList:
    - org.openrewrite.gradle.AddDependency:
          groupId: jakarta.persistence
          artifactId: jakarta.persistence-api
          version: 3.0.0
          configuration: implementation
          acceptTransitive: false
plugins {
    java
    id("org.springframework.boot") version "2.7.18"
    id("io.spring.dependency-management") version "1.0.11.RELEASE"
    id("org.openrewrite.rewrite") version "7.13.0"
}

repositories {
    repositories {
        mavenCentral()
    }
}

rewrite {
    activeRecipe(
        "org.mycompany.Recipe"
    )
}

dependencies {
    rewrite(platform("org.openrewrite.recipe:rewrite-recipe-bom:3.19.0"))
    rewrite("org.openrewrite.recipe:rewrite-spring")

    // has transitive dependency on jakarta.persistence-api
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
}

What did you expect to see?

dependencies {
    rewrite(platform("org.openrewrite.recipe:rewrite-recipe-bom:3.19.0"))
    rewrite("org.openrewrite.recipe:rewrite-spring")
    
    // has transitive dependency on jakarta.persistence-api
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("jakarta.persistence:jakarta.persistence-api:2.2")
}

What did you see instead?

no changes

What is the full stack trace of any errors you encountered?

  • Seems like this change https://github.com/openrewrite/rewrite/pull/5371 dropped acceptTransitive flag and always ignores dependency if found in transitive. See new GradleConfigurationFilter.java

oQue avatar Dec 10 '25 08:12 oQue

Looks like https://github.com/openrewrite/rewrite/pull/6248 is trying to fix the same changes I'm referencing here.

@BoykoAlex do you have any updates?

oQue avatar Dec 10 '25 12:12 oQue

Not really... the issue is that GradleProject marker is not updated after plugin version change. Dependencies and configs need to be recomputed. I'd involve the gradle into this somehow...

BoykoAlex avatar Dec 10 '25 16:12 BoykoAlex