I have three gradle projects. Say ProjectA, ProjectB and ProjectC.
ProjectC is dependent on both ProjectA and ProjectB. While ProjectB is dependent on ProjectA.
So ProjectC's build.gradle has the following lines:
dependencies {
implementation project(':ProjectA')
implementation project(':ProjectB')
}
And ProjectB's build.gradle has the following:
dependencies {
implementation project(':ProjectA')
}
My question is why do I need explicit implementation declaration for ProjectA in ProjectC's build file?
Since, I am adding ProjectB, shouldn't ProjectA be included automatically since ProjectB is dependent on ProjectA ?
In other words, why the following does not work for ProjectC ?
dependencies {
implementation project(':ProjectB')
}
I am new to gradle and thus trying to understand how dependency management between Project's work.
Edit:
So I want to change ProjectB's build.gradle to below:
dependencies {
api project(':ProjectA')
}
So that I can simplify ProjectC's build.gradle to:
dependencies {
implementation project(':ProjectB')
}
However, I get the following error:
A problem occurred evaluating project ':ProjectB'.
> Could not find method api() for arguments [:ProjectA] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
Am I missing something?