1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import proguard.gradle.ProGuardTask
plugins {
id("org.jetbrains.kotlin.jvm")
id("jps-compatible")
}
description = "Kotlin \"main\" script definition"
// You can run Gradle with "-Pkotlin.build.proguard=true" to enable ProGuard run on the jar (on TeamCity, ProGuard always runs)
ext.shrink =findProperty("kotlin.build.proguard")?.toString()?.toBoolean() ?: hasProperty("teamcity")
ext.jarBaseName = property("archivesBaseName") as String
configurations.create("fatJarContents")
configurations.create("proguardLibraryJars")
configurations.create("fatJar")
configurations.create("runtimeJar")
configurations.default.extendsFrom(configurations.runtimeJar)
ext.projectsDependencies = [
":kotlin-scripting-common",
":kotlin-scripting-jvm",
":kotlin-script-util",
":kotlin-script-runtime"]
dependencies {
projectsDependencies.each {
compileOnly(project(it))
fatJarContents(project(it)) { setTransitive(false) }
testCompile(project(it))
}
compileOnly("org.apache.ivy:ivy:2.4.0")
runtime(project(":kotlin-compiler"))
runtime(project(":kotlin-reflect"))
fatJarContents("org.apache.ivy:ivy:2.4.0")
fatJarContents(DependenciesKt.customCommonDep(project,"org.jetbrains.kotlinx", "kotlinx-coroutines-core",[])) { setTransitive(false) }
proguardLibraryJars(files(DependenciesKt.customFirstFromJavaHomeThatExists(project,["jre/lib/rt.jar", "../Classes/classes.jar"],new File(project.property("JDK_18") as String)),
DependenciesKt.customFirstFromJavaHomeThatExists(project,["jre/lib/jsse.jar", "../Classes/jsse.jar"],new File(project.property("JDK_18") as String)),
DependenciesKt.customToolsJar(project)))
proguardLibraryJars(DependenciesKt.customKotlinStdlib(project,null))
proguardLibraryJars(project(":kotlin-reflect"))
}
sourceSets {
"main" {
java.srcDirs("src")
resources.srcDir("resources")
}
"test" { }
}
//publish()
ArtifactsKt.customNoDefaultJar(project)
ext.mainKtsRootPackage = "org.jetbrains.kotlin.mainKts"
ext.mainKtsRelocatedDepsRootPackage = "${mainKtsRootPackage}.relocatedDeps".toString()
task("packJar",type:ShadowJar) {
configurations = [project.configurations.fatJar]
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
destinationDir = new File(buildDir, "libs")
ArtifactsKt.customSetupPublicJar(it,CommonUtilKt.customGetBaseConvention(project).archivesBaseName, "before-proguard")
from(SourceSetsKt.customMainSourceSet(project).output)
from(project.configurations.fatJarContents)
EmbeddableKt.packagesToRelocate.each {
relocate(it, "${mainKtsRelocatedDepsRootPackage}.${it}".toString())
}
}
task("proguard",type:ProGuardTask) {
dependsOn(packJar)
configuration("main-kts.pro")
injars(filter : "!META-INF/versions/**", packJar.outputs.files)
def outputJar = CommonUtilKt.customFileFrom(buildDir, ["libs", "${jarBaseName}-${version}-after-proguard.jar".toString()])
outjars(outputJar)
inputs.files(packJar.outputs.files.singleFile)
outputs.file(outputJar)
libraryjars(filter : "!META-INF/versions/**", project.configurations.proguardLibraryJars)
}
Task pack;
if(shrink){
pack=proguard
}else{
pack=packJar
}
ArtifactsKt.customRuntimeJarArtifactBy(project,pack, pack.outputs.files.getSingleFile()) {
it.name = jarBaseName
it.classifier = ""
}
ArtifactsKt.customDist(project,null,"${name}.jar".toString(),pack){}
ArtifactsKt.customSourcesJar(project,"main") {}
//javadocJar()
|