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)