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:
@@ -1,7 +1,6 @@
|
||||
@file:Suppress("HasPlatformType")
|
||||
|
||||
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
||||
import proguard.gradle.ProGuardTask
|
||||
import java.util.regex.Pattern.quote
|
||||
|
||||
description = "Kotlin Compiler"
|
||||
@@ -12,6 +11,8 @@ plugins {
|
||||
java
|
||||
}
|
||||
|
||||
val JDK_18: String by rootProject.extra
|
||||
|
||||
val fatJarContents by configurations.creating
|
||||
val fatJarContentsStripMetadata by configurations.creating
|
||||
val fatJarContentsStripServices by configurations.creating
|
||||
@@ -133,13 +134,6 @@ dependencies {
|
||||
compile(commonDep("org.jetbrains.intellij.deps", "trove4j"))
|
||||
|
||||
proguardLibraries(project(":kotlin-annotations-jvm"))
|
||||
proguardLibraries(
|
||||
files(
|
||||
firstFromJavaHomeThatExists("jre/lib/rt.jar", "../Classes/classes.jar"),
|
||||
firstFromJavaHomeThatExists("jre/lib/jsse.jar", "../Classes/jsse.jar"),
|
||||
toolsJarFile()
|
||||
)
|
||||
)
|
||||
|
||||
compilerVersion(project(":compiler:compiler.version"))
|
||||
proguardLibraries(project(":compiler:compiler.version"))
|
||||
@@ -253,24 +247,42 @@ val packCompiler by task<Jar> {
|
||||
}
|
||||
}
|
||||
|
||||
val proguard by task<ProGuardTask> {
|
||||
val proguard by task<CacheableProguardTask> {
|
||||
dependsOn(packCompiler)
|
||||
configuration("$rootDir/compiler/compiler.pro")
|
||||
|
||||
val outputJar = fileFrom(buildDir, "libs", "$compilerBaseName-after-proguard.jar")
|
||||
jdkHome = File(JDK_18)
|
||||
|
||||
inputs.files(packCompiler.get().outputs.files.singleFile)
|
||||
outputs.file(outputJar)
|
||||
configuration("$projectDir/compiler.pro")
|
||||
|
||||
injars(
|
||||
mapOf("filter" to """
|
||||
!org/apache/log4j/jmx/Agent*,
|
||||
!org/apache/log4j/net/JMS*,
|
||||
!org/apache/log4j/net/SMTP*,
|
||||
!org/apache/log4j/or/jms/MessageRenderer*,
|
||||
!org/jdom/xpath/Jaxen*,
|
||||
!org/jline/builtins/ssh/**,
|
||||
!org/mozilla/javascript/xml/impl/xmlbeans/**,
|
||||
!net/sf/cglib/**,
|
||||
!META-INF/maven**,
|
||||
**.class,**.properties,**.kt,**.kotlin_*,**.jnilib,**.so,**.dll,**.txt,**.caps,
|
||||
META-INF/services/**,META-INF/native/**,META-INF/extensions/**,META-INF/MANIFEST.MF,
|
||||
messages/**""".trimIndent()),
|
||||
provider { packCompiler.get().outputs.files.singleFile }
|
||||
)
|
||||
|
||||
outjars(fileFrom(buildDir, "libs", "$compilerBaseName-after-proguard.jar"))
|
||||
|
||||
libraryjars(mapOf("filter" to "!META-INF/versions/**"), proguardLibraries)
|
||||
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!!)
|
||||
)
|
||||
)
|
||||
|
||||
printconfiguration("$buildDir/compiler.pro.dump")
|
||||
|
||||
// This properties are used by proguard config compiler.pro
|
||||
doFirst {
|
||||
System.setProperty("kotlin-compiler-jar-before-shrink", packCompiler.get().outputs.files.singleFile.canonicalPath)
|
||||
System.setProperty("kotlin-compiler-jar", outputJar.canonicalPath)
|
||||
}
|
||||
}
|
||||
|
||||
val pack = if (kotlinBuildProperties.proguard) proguard else packCompiler
|
||||
@@ -281,7 +293,7 @@ val jar = runtimeJar {
|
||||
dependsOn(compilerVersion)
|
||||
|
||||
from {
|
||||
zipTree(pack.get().outputs.files.singleFile)
|
||||
zipTree(pack.get().singleOutputFile())
|
||||
}
|
||||
|
||||
from {
|
||||
|
||||
Reference in New Issue
Block a user