Add the following snippet to one of your projects:
allprojects {
tasks.register('printConfigurations') {
if (!configurations.empty) {
println "==="
println "Configurations of ${project.path} project"
println "==="
configurations.all {
println "${name}${canBeResolved ? '' : ' resolvable'}${canBeConsumed ? '' : ' consumable'}${canBeDeclared ? '' : ' scope'}"
extendsFrom.each {
println " ${it.name}"
}
}
}
}
}
Run gradlew printConfigurations
Output:
===
Configurations of :foo project
===
annotationProcessor consumable
apiElements resolvable scope
archives resolvable scope
compileClasspath consumable scope
compileOnly
implementation
compileOnly resolvable consumable
default resolvable scope
runtimeElements
implementation resolvable consumable
mainSourceElements resolvable scope
implementation
runtimeClasspath consumable scope
runtimeOnly
implementation
runtimeElements resolvable scope
implementation
runtimeOnly
runtimeOnly resolvable consumable
testAnnotationProcessor consumable
testCompileClasspath consumable scope
testCompileOnly
testImplementation
testCompileOnly resolvable consumable
testImplementation resolvable consumable
implementation
testResultsElementsForTest resolvable scope
testRuntimeClasspath consumable scope
testRuntimeOnly
testImplementation
testRuntimeOnly resolvable consumable
runtimeOnly
Not fancy, but fills that gap between the standard outgoingVariants
, dependencies
, and dependencyInsight
tasks.