Hi,
Given multiple Gradle projects which use a similar set of dependencies, I often see errors like this (which are usually transitive dependencies that I haven’t specifically defined).
FAILURE: Build failed with an exception.
* What went wrong:
Could not resolve all dependencies for configuration ':compileClasspath'.
> A conflict was found between the following modules:
- com.something:example:1.2.3
- com.something:example:1.2.2
- com.something:example:1.2.1
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
The typical way to resolve this error would be to add force com.something:example:1.2.3 (latest) to the resolution strategy in build.gradle and then try running the compileJava task again until all conflicts are resolved.
I’m wondering if it would be a good practice to define a general resolution strategy which could be somehow applied by all the projects and then if there are additional conflicts, those would be resolved in build.gradle as usual. If this is a fair approach, would a good place to apply the general resolution strategy be in a Gradle plugin or is there a better choice?
Another question would be, since I have a consistent way I want to resolve these conflicts each time, can Gradle determine what the conflicts are and then I could generate the list of versions to force rather than discovering the conflicts by trial and error?
Thanks