Why doesn't Gradle include transitive dependencies in compile / runtime classpath?

build, build-system, dependency-management

Solution

Finally, the problem didn't come from the scripts. I've just cleared gradle's cache, and each project's build folder, to make this work.

Problem

I'm learning how Gradle works, and I can't understand how it resolves a project transitive dependencies. For now, I have two projects : - projectA : which has a couple of dependencies on external libraries - projectB : which has only one dependency on projectA No matter how I try, when I build projectB, gradle doesn't include any projectA dependencies (X and Y) in projectB's compile or runtime classpath. I've only managed to make it work by including projectA's dependencies in projectB's build script, which, in my opinion does not make any sense. These dependencies should be automatically attached to projectB. I'm pretty sure I'm missing something but I can't figure out what. I've read about "lib dependencies", but it seems to apply only to local projects like described here, not on external dependencies. Here is the build.gradle I use in the root project (the one that contains both projectA and projectB) : ``` buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.3' } } subprojects { apply plugin: 'java' apply plugin: 'idea' group = 'com.company' repositories { mavenCentral() add(new org.apache.ivy.plugins.resolver.SshResolver()) { name = 'customRepo' addIvyPattern "ssh://.../repository/[organization]/[module]/[revision]/[module].xml" addArtifactPattern "ssh://.../[organization]/[module]/[revision]/[module](-[classifier]).[ext]" } } sourceSets { main { java { srcDir 'src/' } } } idea.module { downloadSources = true } // task that create sources jar task sourceJar(type: Jar) { from sourceSets.main.java classifier 'sources' } // Publishing configuration uploadArchives { repositories { add project.repositories.customRepo } } artifacts { archives(sourceJar) { name "$name-sources" type 'source' builtBy sourceJar } } } ``` This one concerns projectA only : ``` version = '1.0' dependencies { compile 'com.company:X:1.0' compile 'com.company:B:1.0' } ``` And this is the one used by projectB : ``` version = '1.0' dependencies { compile ('com.company:projectA:1.0') { transitive = true } } ``` Thank you in advance for any help, and please, apologize me for my bad English.

Original source

Related problems