Let us consider this setup:
{ gradletest } » tree . ~/gradletest
.
├── build.gradle
├── project-a
│ └── build.gradle
├── project-b
│ └── build.gradle
└── settings.gradle
Parent Project: (in folder gradletest)
build.gradle
allprojects {
apply plugin: java
}
settings.gradle
include ":project-a"
include ":project-b"
project-a:
build.gradle
dependencies {
compile project (":project-b")
}
configurations {
compile.resolutionStrategy {
eachDependency { DependencyResolveDetails details ->
if (details.requested.group == 'gradletest') {
println "Changing version of " + details.requested..toString() + " to 1.4"
details.useVersion '1.4'
}
}
}
}
The build.gradle of project-b is empty.
Now if you call gradle :project-a:dependencies
you can see that the project dependency on :project-b
is being substituted with a module dependency.
{ gradletest } » gradle :project-a:dependencies ~/gradletest
:project-a:dependencies
------------------------------------------------------------
Project :project-a
------------------------------------------------------------
archives - Configuration for archive artifacts.
No dependencies
compile - Dependencies for source set 'main'.
Changing version of gradletest:project-b:unspecified to 1.4
\--- project :project-b -> gradletest:project-b:1.4 FAILED
Shouldn’t the resolution strategy not be triggered for project dependencies at all? Or is this the expected behaviour?
This test was run with Gradle-2.13.