From b2926a932229aff1c7332f8e5727bb18d4ad2de5 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Thu, 16 Nov 2017 11:57:08 +0100 Subject: [PATCH] Add classpath printing tasks to all relevant projects --- build.gradle.kts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index 4e0dd039565..1d3c225b5f4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -332,6 +332,18 @@ allprojects { if (javaHome != defaultJavaHome || jvmTarget != defaultJvmTarget) { configureJvmProject(javaHome!!, jvmTarget!!) } + + fun File.toProjectRootRelativePathOrSelf() = (relativeToOrNull(rootDir)?.takeUnless { it.startsWith("..") } ?: this).path + + fun FileCollection.printClassPath(role: String) = + println("${project.path} $role classpath:\n ${joinToString("\n ") { it.toProjectRootRelativePathOrSelf() } }") + + try { the() } catch (_: UnknownDomainObjectException) { null }?.let { javaConvention -> + task("printCompileClasspath") { doFirst { javaConvention.sourceSets["main"].compileClasspath.printClassPath("compile") } } + task("printRuntimeClasspath") { doFirst { javaConvention.sourceSets["main"].runtimeClasspath.printClassPath("runtime") } } + task("printTestCompileClasspath") { doFirst { javaConvention.sourceSets["test"].compileClasspath.printClassPath("test compile") } } + task("printTestRuntimeClasspath") { doFirst { javaConvention.sourceSets["test"].runtimeClasspath.printClassPath("test runtime") } } + } } }