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
+11 -9
View File
@@ -5,7 +5,6 @@ import com.github.jengelman.gradle.plugins.shadow.transformers.TransformerContex
import kotlinx.metadata.jvm.KmModuleVisitor
import kotlinx.metadata.jvm.KotlinModuleMetadata
import org.gradle.api.tasks.PathSensitivity.RELATIVE
import proguard.gradle.ProGuardTask
import shadow.org.apache.tools.zip.ZipEntry
import shadow.org.apache.tools.zip.ZipOutputStream
@@ -21,6 +20,8 @@ plugins {
java
}
val JDK_16: String by rootProject.extra
callGroovy("configureJavaOnlyJvm6Project", project)
publish()
@@ -43,7 +44,6 @@ dependencies {
proguardDeps(kotlinStdlib())
proguardAdditionalInJars(project(":kotlin-annotations-jvm"))
proguardDeps(files(firstFromJavaHomeThatExists("jre/lib/rt.jar", "../Classes/classes.jar", jdkHome = File(property("JDK_16") as String))))
embedded(project(":core:type-system"))
embedded(project(":kotlin-reflect-api"))
@@ -56,7 +56,7 @@ dependencies {
embedded(project(":core:util.runtime"))
embedded("javax.inject:javax.inject:1")
embedded(protobufLite())
compileOnly("org.jetbrains:annotations:13.0")
}
@@ -139,16 +139,16 @@ val stripMetadata by tasks.registering {
val proguardOutput = "$libsDir/${property("archivesBaseName")}-proguard.jar"
val proguard by task<ProGuardTask> {
val proguard by task<CacheableProguardTask> {
dependsOn(stripMetadata)
inputs.files(stripMetadata.get().outputs.files)
outputs.file(proguardOutput)
injars(mapOf("filter" to "!META-INF/versions/**"), stripMetadata.get().outputs.files)
injars(mapOf("filter" to "!META-INF/**,!**/*.kotlin_builtins"), proguardAdditionalInJars)
outjars(proguardOutput)
jdkHome = File(JDK_16)
libraryjars(mapOf("filter" to "!META-INF/versions/**"), proguardDeps)
libraryjars(firstFromJavaHomeThatExists("jre/lib/rt.jar", "../Classes/classes.jar", jdkHome = jdkHome!!))
configuration("$core/reflection.jvm/reflection.pro")
}
@@ -202,7 +202,7 @@ val intermediate = when {
val result by task<Jar> {
dependsOn(intermediate)
from {
zipTree(intermediate.get().outputs.files.singleFile)
zipTree(intermediate.get().singleOutputFile())
}
callGroovy("manifestAttributes", manifest, project, "Main")
}
@@ -210,8 +210,10 @@ val result by task<Jar> {
val modularJar by task<Jar> {
dependsOn(intermediate)
archiveClassifier.set("modular")
from(zipTree(intermediate.get().outputs.files.single()))
from(zipTree(reflectShadowJar.get().archivePath)) {
from {
zipTree(intermediate.get().singleOutputFile())
}
from(zipTree(provider { reflectShadowJar.get().archiveFile.get().asFile })) {
include("META-INF/versions/**")
}
callGroovy("manifestAttributes", manifest, project, "Main", true)