I just upgraded my projects to gradle 7 and am running into missing transitive dependencies. I tried switching my build.gradle file to use 'api' in the dependencies but that did not fix it.
projectA has a dependency on projectB and projectB has a dependency on projectC.
projectA - build.gradle
dependencies {
*implementation group: 'group-projectB', name: 'name-projectB', version: '1.+'*
}
projectB - build.gradle
dependencies {
api group: 'group-projectC', name: 'name-projectC', version: '1.+'
}
projectA compiles fine but has runtime errors - get a ClassNotFoundException for class from projectC
If I change the build.gradle of projectA as follows (include projectC the runtime errors go away)
dependencies {
*implementation group: 'group-projectB', name: 'name-projectB', version: '1.+'*
*implementation group: 'group-projectC', name: 'name-projectC', version: '1.+'*
}
I don't see why I need to include the projectC dependency in projectA when it is clearly defined in projectB. This was never a problem in gradle 6.
Any suggestions are appreciated. Thank You in advance.
####################### Edit to include more information
projectB:
publications {
mavenJava(MavenPublication) {
group = 'group-projectB'
artifactId = 'artifact-projectB'
artifact (file("${buildDir}/libs/${project.name}-${project.version}.jar"))
}
}
projectC:
publications {
mavenJava(MavenPublication) {
group = 'group-projectC'
artifactId = 'artifact-projectC'
artifact (file("${buildDir}/libs/${project.name}-${project.version}.jar"))
}
}