allprojects { everyProj -> task printClasspath { doLast { def classPath = [].toSet(); pluginManager.withPlugin('java') { classPath = sourceSets.main.runtimeClasspath.asPath } if (!classPath) { pluginManager.withPlugin('android') { def androidBootClasspath = android.getBootClasspath()[0] def cp = [androidBootClasspath]; def confAttrSpec = [:] def configuredDimensionList = [] if (project.hasProperty('confAttrs')) { confAttrSpec = confAttrs.toLowerCase().split(',').collectEntries { [(it.split(':')[0]) : it.split(':')[1]] } configuredDimensionList = android.flavorDimensionList.findAll { confAttrSpec[it] } } project.android.applicationVariants.all { v -> // remove classpath for unused buildTypes if (confAttrSpec['buildtype'] && v.buildType.getName() != confAttrSpec['buildtype']) { return } // remove classpath for unused dimensions if (configuredDimensionList) { def usedFlavors = configuredDimensionList.findAll { v.flavorName.toLowerCase() == confAttrSpec[it] } if (!usedFlavors) { return; } } v.getCompileClasspath(null).getFiles().each { File f -> cp.add(f.getAbsolutePath()) } v.javaCompile.classpath.getFiles().each { f -> cp.add(f) } cp.add(v.javaCompile.destinationDir.getAbsolutePath()) } classPath = cp.join(":") } } /* the `snykReachabilityClasspath` can be declared using a `ext` block in the projects build script e.g for java: ext { snykReachabilityClasspath = sourceSets.main.compileClasspath.asPath } It requires a path formatted string, e.g: */ if (!classPath && project.hasProperty('snykReachabilityClasspath')) { classPath = project.snykReachabilityClasspath } if (classPath) println(classPath) } } }