I’m pretty sure I’m running into a known issue with the Java plugin for Gradle.
I have a project that builds all fine in 4.0.2, but creates a bad jar in 4.1 because it’s pulling in a bunch of dependencies that it shouldn’t (some of which are provided in the base project). Those are creating conflicts in the classpath.
Trouble is, I have no idea what to do to my build file to fix it.
In the working version (4.0.2), I have this when I run the build with --debug:
[org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration com.myproject.platform:sharedSubProject:5.0.16-SNAPSHOT(default).
This gets followed by messages about all the dependencies that are getting excluded, like
[org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] com.atlassian.sal:sal-api is excluded from com.myproject.platform:sharedSubProject:5.0.16-SNAPSHOT(default). (edited)
In the failing version (4.1 RC2), the verbose debug log looks like
[org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration com…myproject.platform:sharedSubProject:5.0.16-SNAPSHOT(runtimeElements).
This is a relatively complex project. It’s got multiple sub-projects, with a shared sub-project used by all of them.
I’ve tried applying the Java plugin to all of the subprojects, but that doesn’t resolve the issue. I don’t quite understand the underlying bug well enough to reason about what needs to be fixed to exclude dependencies properly, and whether that should be a bug report on Github or if there’s something I can change in my build that will rectify the issue.