Customizing resolution of a dependency directly
use variant define attributes
configurations.all { resolutionStrategy.dependencySubstitution { substitute(variant(module("com.google.guava:guava:28.2-jre")) { attributes { attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.REGULAR_PLATFORM)) } }).using(module("com.google.guava:guava:28.2-jre")) }}specify capabilities
configurations.testCompileClasspath { resolutionStrategy.dependencySubstitution { substitute(module("com.acme:lib:1.0")).using(variant(module("com.acme:lib:1.0")) { capabilities { requireCapability("com.acme:lib-test-fixtures") } }) }}