diff --git a/build.gradle.kts b/build.gradle.kts index adc317450ff..f73b964ada6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,4 +1,5 @@ +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import org.gradle.api.Project import java.util.* import java.io.File @@ -6,6 +7,7 @@ import org.gradle.api.tasks.bundling.Jar import org.gradle.plugins.ide.idea.model.IdeaModel import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile +import proguard.gradle.ProGuardTask buildscript { extra["defaultSnapshotVersion"] = "1.2-SNAPSHOT" @@ -22,8 +24,6 @@ buildscript { extra["repos"] = repos - extra["versions.proguard"] = "5.3.3" - repositories { for (repo in repos) { maven(url = repo) @@ -33,6 +33,7 @@ buildscript { dependencies { classpath("com.gradle.publish:plugin-publish-plugin:0.9.7") classpath(kotlinDep("gradle-plugin", bootstrapKotlinVersion)) + classpath("net.sf.proguard:proguard-gradle:5.3.3") } } @@ -606,3 +607,41 @@ fun Project.configureJvmProject(javaHome: String, javaVersion: String) { executable = File(javaHome, "bin/java").canonicalPath } } + +tasks.create("findShadowJarsInClasspath").doLast { + fun Collection.printSorted(indent: String = " ") { + sortedBy { it.path }.forEach { println(indent + it.relativeTo(rootProject.projectDir)) } + } + + val shadowJars = hashSetOf() + for (project in rootProject.allprojects) { + for (task in project.tasks) { + when (task) { + is ShadowJar -> { + shadowJars.add(File(task.archivePath)) + } + is ProGuardTask -> { + shadowJars.addAll(task.outputs.files.toList()) + } + } + } + } + + println("Shadow jars:") + shadowJars.printSorted() + + fun Project.checkConfig(configName: String) { + val config = configurations.findByName(configName) ?: return + val shadowJarsInConfig = config.resolvedConfiguration.files.filter { it in shadowJars } + if (shadowJarsInConfig.isNotEmpty()) { + println() + println("Project $project contains shadow jars in configuration '$configName':") + shadowJarsInConfig.printSorted() + } + } + + for (project in rootProject.allprojects) { + project.checkConfig("compileClasspath") + project.checkConfig("testCompileClasspath") + } +} diff --git a/libraries/reflect/build.gradle.kts b/libraries/reflect/build.gradle.kts index 82c27763a54..cd8aebb72ee 100644 --- a/libraries/reflect/build.gradle.kts +++ b/libraries/reflect/build.gradle.kts @@ -12,15 +12,6 @@ import java.io.DataOutputStream description = "Kotlin Full Reflection Library" -buildscript { - repositories { - jcenter() - } - dependencies { - classpath("net.sf.proguard:proguard-gradle:${property("versions.proguard")}") - } -} - plugins { java } callGroovy("configureJavaOnlyJvm6Project", this) @@ -235,4 +226,4 @@ javadocJar() dist(fromTask = result) { from(sourcesJar) -} +} \ No newline at end of file diff --git a/prepare/compiler/build.gradle.kts b/prepare/compiler/build.gradle.kts index 8b7357af8bf..cdd07bb942e 100644 --- a/prepare/compiler/build.gradle.kts +++ b/prepare/compiler/build.gradle.kts @@ -5,12 +5,6 @@ import org.gradle.api.file.DuplicatesStrategy description = "Kotlin Compiler" -buildscript { - dependencies { - classpath("net.sf.proguard:proguard-gradle:${property("versions.proguard")}") - } -} - plugins { `java` }