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:
@@ -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)
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user