From 33b7745b175e9552476f7869c610c7a12143fa83 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Mon, 1 Jul 2019 15:47:15 +0300 Subject: [PATCH] Find only non-default shadow jars in findShadowJarsInClasspath diagnostic We are interested only in shadow jars that might break the incremental compilation --- build.gradle.kts | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index cf76176cae5..32f768bf898 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -745,17 +745,24 @@ fun Project.configureJvmProject(javaHome: String, javaVersion: String) { } } -tasks.create("findShadowJarsInClasspath").doLast { +tasks.create("findNonStandardShadowJarsInClasspath").doLast { fun Collection.printSorted(indent: String = " ") { sortedBy { it.path }.forEach { println(indent + it.relativeTo(rootProject.projectDir)) } } + val mainJars = hashSetOf() val shadowJars = hashSetOf() for (project in rootProject.allprojects) { + project.withJavaPlugin { + project.sourceSets.forEach { sourceSet -> + val jarTask = project.tasks.findByPath(sourceSet.jarTaskName) as? Jar + jarTask?.outputFile?.let { mainJars.add(it) } + } + } for (task in project.tasks) { when (task) { is ShadowJar -> { - shadowJars.add(fileFrom(task.archivePath)) + shadowJars.add(fileFrom(task.outputFile)) } is ProGuardTask -> { shadowJars.addAll(task.outputs.files.toList()) @@ -764,7 +771,8 @@ tasks.create("findShadowJarsInClasspath").doLast { } } - println("Shadow jars:") + shadowJars.removeAll(mainJars) + println("Shadow jars that might break incremental compilation:") shadowJars.printSorted() fun Project.checkConfig(configName: String) { @@ -778,7 +786,14 @@ tasks.create("findShadowJarsInClasspath").doLast { } for (project in rootProject.allprojects) { - project.checkConfig("compileClasspath") - project.checkConfig("testCompileClasspath") + project.sourceSetsOrNull?.forEach { sourceSet -> + project.checkConfig(sourceSet.compileClasspathConfigurationName) + } } } + +val Jar.outputFile: File + get() = archiveFile.get().asFile + +val Project.sourceSetsOrNull: SourceSetContainer? + get() = convention.findPlugin(JavaPluginConvention::class.java)?.sourceSets