How do I exclude specific transitive dependencies of something I depend on?

In plain Gradle, what you are looking for can be achieved as:

dependencies {
  compile('com.example.m:m:1.0') {
     exclude group: 'org.unwanted', module: 'x 
  }
  compile 'com.example.l:1.0'
}

This would exclude the module X from the dependencies of M, but will still bring it if you depend on L.

Structuring that in a nicer way is a bit more complex and is largely a matter of taste (IMHO the ext.libraries approach puts some limitations here)

1 Like