Add diagnostic task to print all shadow jars in compile classpaths

This commit is contained in:
Alexey Tsvetkov
2018-02-22 06:26:16 +03:00
parent ccd6263787
commit e8f8488d54
3 changed files with 42 additions and 18 deletions
+41 -2
View File
@@ -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<File>.printSorted(indent: String = " ") {
sortedBy { it.path }.forEach { println(indent + it.relativeTo(rootProject.projectDir)) }
}
val shadowJars = hashSetOf<File>()
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")
}
}
+1 -10
View File
@@ -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)
}
}
-6
View File
@@ -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`
}