openrewrite / openrewrite/rewrite
Gradle Recipe AddDependency does not support project dependency
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 3.7k
- Forks
- 570
- Avg merge
- 13h 12m
- Merged PRs (30d)
- 261
Description
When trying to add a Gradle project as API dependency as in api(project(':subproject')) via the org.openrewrite.gradle.AddDependency recipe, the following exception occurs:
Exception while visiting project file 'project/build.gradle', caused by: java.lang.IllegalArgumentException: Invalid count parameter: 4, at org.openrewrite.gradle.util.DependencyStringNotationConverter.assignValue(DependencyStringNotationConverter.java:68)
at app//org.openrewrite.TreeVisitor.visit(TreeVisitor.java:324)
at app//org.openrewrite.TreeVisitor.visitAndCast(TreeVisitor.java:356)
at app//org.openrewrite.java.JavaVisitor.visitRightPadded(JavaVisitor.java:1274)
at app//org.openrewrite.java.JavaVisitor.lambda$visitBlock$4(JavaVisitor.java:367)
at app//org.openrewrite.internal.ListUtils.lambda$map$0(ListUtils.java:145)
at app//org.openrewrite.internal.ListUtils.map(ListUtils.java:126)
at app//org.openrewrite.internal.ListUtils.map(ListUtils.java:145)
at app//org.openrewrite.java.JavaVisitor.visitBlock(JavaVisitor.java:366)
at app//org.openrewrite.groovy.GroovyIsoVisitor.visitBlock(GroovyIsoVisitor.java:112)
at app//org.openrewrite.groovy.GroovyIsoVisitor.visitBlock(GroovyIsoVisitor.java:24)
at app//org.openrewrite.java.tree.J$Block.acceptJava(J.java:777)
at app//org.openrewrite.java.tree.J.accept(J.java:64)
at app//org.openrewrite.TreeVisitor.visit(TreeVisitor.java:276)
at app//org.openrewrite.TreeVisitor.visitAndCast(TreeVisitor.java:356)
at app//org.openrewrite.java.JavaVisitor.visitLambda(JavaVisitor.java:741)
at app//org.openrewrite.groovy.GroovyIsoVisitor.visitLambda(GroovyIsoVisitor.java:228)
at app//org.openrewrite.groovy.GroovyIsoVisitor.visitLambda(GroovyIsoVisitor.java:24)
at app//org.openrewrite.java.tree.J$Lambda.acceptJava(J.java:2990)
at app//org.openrewrite.java.tree.J.accept(J.java:64)
at app//org.openrewrite.TreeVisitor.visit(TreeVisitor.java:276)
at app//org.openrewrite.TreeVisitor.visitAndCast(TreeVisitor.java:356)
at app//org.openrewrite.java.JavaVisitor.visitRightPadded(JavaVisitor.java:1274)
at app//org.openrewrite.java.JavaVisitor.lambda$visitContainer$33(JavaVisitor.java:1327)
at app//org.openrewrite.internal.ListUtils.lambda$map$0(ListUtils.java:145)
at app//org.openrewrite.internal.ListUtils.map(ListUtils.java:126)
at app//org.openrewrite.internal.ListUtils.map(ListUtils.java:145)
at app//org.openrewrite.java.JavaVisitor.visitContainer(JavaVisitor.java:1327)
at app//org.openrewrite.java.JavaVisitor.visitMethodInvocation(JavaVisitor.java:862)
at app//org.openrewrite.groovy.GroovyIsoVisitor.visitMethodInvocation(GroovyIsoVisitor.java:248)
at app//org.openrewrite.gradle.AddDependency$1.visitMethodInvocation(AddDependency.java:158)
at app//org.openrewrite.gradle.AddDependency$1.visitMethodInvocation(AddDependency.java:155)
at app//org.openrewrite.java.tree.J$MethodInvocation.acceptJava(J.java:3716)
at app//org.openrewrite.java.tree.J.accept(J.java:64)
at app//org.openrewrite.TreeVisitor.visit(TreeVisitor.java:276)
at app//org.openrewrite.TreeVisitor.visitAndCast(TreeVisitor.java:356)
at app//org.openrewrite.groovy.GroovyVisitor.lambda$visitCompilationUnit$0(GroovyVisitor.java:52)
at app//org.openrewrite.internal.ListUtils.lambda$map$0(ListUtils.java:145)
at app//org.openrewrite.internal.ListUtils.map(ListUtils.java:126)
at app//org.openrewrite.internal.ListUtils.map(ListUtils.java:145)
at app//org.openrewrite.groovy.GroovyVisitor.visitCompilationUnit(GroovyVisitor.java:52)
at app//org.openrewrite.groovy.GroovyIsoVisitor.visitCompilationUnit(GroovyIsoVisitor.java:27)
at app//org.openrewrite.gradle.AddDependency$1.visitCompilationUnit(AddDependency.java:215)
at app//org.openrewrite.gradle.AddDependency$1.visitCompilationUnit(AddDependency.java:155)
at app//org.openrewrite.groovy.GroovyVisitor.visitJavaSourceFile(GroovyVisitor.java:42)
at app//org.openrewrite.groovy.GroovyIsoVisitor.visitJavaSourceFile(GroovyIsoVisitor.java:57)
at app//org.openrewrite.groovy.GroovyIsoVisitor.visitJavaSourceFile(GroovyIsoVisitor.java:24)
at app//org.openrewrite.groovy.tree.G$CompilationUnit.acceptGroovy(G.java:182)
at app//org.openrewrite.groovy.tree.G.accept(G.java:43)
at app//org.openrewrite.TreeVisitor.visit(TreeVisitor.java:276)
at app//org.openrewrite.gradle.AddDependency.lambda$visit$3(AddDependency.java:226)
at java.base@17.0.6/java.util.Optional.map(Optional.java:260)
at app//org.openrewrite.gradle.AddDependency.lambda$visit$4(AddDependency.java:155)
at app//org.openrewrite.internal.ListUtils.lambda$map$0(ListUtils.java:145)
at app//org.openrewrite.internal.ListUtils.map(ListUtils.java:126)
at app//org.openrewrite.internal.ListUtils.map(ListUtils.java:145)
at app//org.openrewrite.gradle.AddDependency.visit(AddDependency.java:154)
at app//org.openrewrite.RecipeScheduler.scheduleVisit(RecipeScheduler.java:313)
... 90 more
Caused by: java.lang.IllegalArgumentException: Invalid count parameter: 4
at org.openrewrite.gradle.util.DependencyStringNotationConverter.assignValue(DependencyStringNotationConverter.java:68)
at org.openrewrite.gradle.util.DependencyStringNotationConverter.parse(DependencyStringNotationConverter.java:47)
at org.openrewrite.gradle.util.DependencyStringNotationConverter.parse(DependencyStringNotationConverter.java:22)
at org.openrewrite.gradle.AddDependency$1.visitMethodInvocation(AddDependency.java:162)
at org.openrewrite.gradle.AddDependency$1.visitMethodInvocation(AddDependency.java:155)
at org.openrewrite.java.tree.J$MethodInvocation.acceptJava(J.java:3716)
at org.openrewrite.java.tree.J.accept(J.java:64)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:276)
... 146 more
Used version of org.openrewrite:rewrite-gradle is 7.38.0.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with org.openrewrite.gradle.AddDependency in AddDependency.java and inspect how it calls DependencyStringNotationConverter.java. Reproduce the failure with api(project(':subproject')) using the reported Gradle setup, then verify that the recipe completes without the invalid-count exception and handles the project dependency correctly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- groovy, java
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100