Build: Make ProGuard task cacheable

Exclude jdk files form libraries input. Instead add jdk major version
to inputs. JavaCompile task acts same to ignore fluctuations in JDK
implementations since api should remain same
This commit is contained in:
Vyacheslav Gerasimov
2020-02-04 02:44:04 +03:00
parent 03613d4708
commit 7dc24a13e4
10 changed files with 452 additions and 75 deletions
@@ -8,6 +8,7 @@ plugins {
id("jps-compatible")
}
val JDK_18: String by rootProject.extra
val jarBaseName = property("archivesBaseName") as String
val proguardLibraryJars by configurations.creating
@@ -31,9 +32,7 @@ dependencies {
embedded(project(":kotlin-script-util")) { isTransitive = false }
embedded("org.apache.ivy:ivy:2.5.0")
embedded(commonDep("org.jetbrains.kotlinx", "kotlinx-coroutines-core")) { isTransitive = false }
proguardLibraryJars(files(firstFromJavaHomeThatExists("jre/lib/rt.jar", "../Classes/classes.jar"),
firstFromJavaHomeThatExists("jre/lib/jsse.jar", "../Classes/jsse.jar"),
toolsJarFile()))
proguardLibraryJars(kotlinStdlib())
proguardLibraryJars(project(":kotlin-reflect"))
proguardLibraryJars(project(":kotlin-compiler"))
@@ -67,20 +66,23 @@ val relocatedJar by task<ShadowJar> {
}
}
val proguard by task<ProGuardTask> {
val proguard by task<CacheableProguardTask> {
dependsOn(relocatedJar)
configuration("main-kts.pro")
injars(mapOf("filter" to "!META-INF/versions/**"), relocatedJar.get().outputs.files)
val outputJar = fileFrom(buildDir, "libs", "$jarBaseName-$version-after-proguard.jar")
outjars(outputJar)
inputs.files(relocatedJar.get().outputs.files.singleFile)
outputs.file(outputJar)
outjars(fileFrom(buildDir, "libs", "$jarBaseName-$version-after-proguard.jar"))
jdkHome = File(JDK_18)
libraryjars(mapOf("filter" to "!META-INF/versions/**"), proguardLibraryJars)
libraryjars(
files(
firstFromJavaHomeThatExists("jre/lib/rt.jar", "../Classes/classes.jar", jdkHome = jdkHome!!),
firstFromJavaHomeThatExists("jre/lib/jsse.jar", "../Classes/jsse.jar", jdkHome = jdkHome!!),
toolsJarFile(jdkHome = jdkHome!!)
)
)
}
val resultJar by task<Jar> {
@@ -88,7 +90,7 @@ val resultJar by task<Jar> {
dependsOn(pack)
setupPublicJar(jarBaseName)
from {
zipTree(pack.get().outputs.files.singleFile)
zipTree(pack.get().singleOutputFile())
}
}