I have a project A which depends on library B, I am using gradle composite builds.
Project B contains several common dependencies such as "org.apache.commons:commons-lang3"
Project A uses "org.apache.commons:commons-lang3" as well but transitive dependencies resolution does not work as I would expect, I have to declare again "org.apache.commons:commons-lang3" in the dependencies block of project A build.gradle in order to make it work.
Project A build.gradle:
group = 'org.example.app'
version = '0.1.0'
plugins {
id 'java'
id 'application'
}
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(11))
}
}
dependencies {
implementation 'org.example.libs:B'
}
Project A settings.gradle
includeBuild '../../libs/B'
Project B build.gradle:
group = 'org.example.libs'
version = '0.1.0
plugins {
id 'java-library'
}
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(11))
}
}
dependencies {
implementation 'org.apache.commons:commons-lang3:3.12.0'
}
repositories {
mavenCentral()
}
Project B compiles well as standalone but I can't compile project A without adding again "org.apache.commons:commons-lang3:3.12.0" in its build.gradle. Isn't it supposed to be resolved as transitive dependency from project B ?
Project A Compilation throws errors such as :
error: package org.apache.commons.lang3 does not exist
What am I missing ?