mirror of
https://github.com/hanzoai/java-sdk.git
synced 2026-10-30 15:07:36 +00:00
102 lines
3.2 KiB
Kotlin
102 lines
3.2 KiB
Kotlin
plugins {
|
|
id("hanzo.kotlin")
|
|
id("com.gradleup.shadow") version "8.3.8"
|
|
}
|
|
|
|
buildscript {
|
|
repositories {
|
|
google()
|
|
}
|
|
|
|
dependencies {
|
|
classpath("com.guardsquare:proguard-gradle:7.4.2")
|
|
classpath("com.android.tools:r8:8.3.37")
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
testImplementation(project(":hanzo-java"))
|
|
testImplementation(kotlin("test"))
|
|
testImplementation("org.junit.jupiter:junit-jupiter-api:5.9.3")
|
|
testImplementation("org.assertj:assertj-core:3.27.7")
|
|
testImplementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.14.0")
|
|
}
|
|
|
|
tasks.shadowJar {
|
|
from(sourceSets.test.get().output)
|
|
configurations = listOf(project.configurations.testRuntimeClasspath.get())
|
|
}
|
|
|
|
val proguardJarPath = "${layout.buildDirectory.get()}/libs/${project.name}-${project.version}-proguard.jar"
|
|
val proguardJar by tasks.registering(proguard.gradle.ProGuardTask::class) {
|
|
group = "verification"
|
|
dependsOn(tasks.shadowJar)
|
|
notCompatibleWithConfigurationCache("ProGuard")
|
|
|
|
injars(tasks.shadowJar)
|
|
outjars(proguardJarPath)
|
|
printmapping("${layout.buildDirectory.get()}/proguard-mapping.txt")
|
|
|
|
val javaHome = System.getProperty("java.home")
|
|
if (System.getProperty("java.version").startsWith("1.")) {
|
|
// Before Java 9, the runtime classes were packaged in a single jar file.
|
|
libraryjars("$javaHome/lib/rt.jar")
|
|
} else {
|
|
// As of Java 9, the runtime classes are packaged in modular jmod files.
|
|
libraryjars(
|
|
// Filters must be specified first, as a map.
|
|
mapOf("jarfilter" to "!**.jar", "filter" to "!module-info.class"),
|
|
"$javaHome/jmods/java.base.jmod"
|
|
)
|
|
}
|
|
|
|
configuration("./test.pro")
|
|
configuration("../hanzo-java-core/src/main/resources/META-INF/proguard/hanzo-java-core.pro")
|
|
}
|
|
|
|
val testProGuard by tasks.registering(JavaExec::class) {
|
|
group = "verification"
|
|
dependsOn(proguardJar)
|
|
notCompatibleWithConfigurationCache("ProGuard")
|
|
|
|
mainClass.set("ai.hanzo.api.proguard.ProGuardCompatibilityTest")
|
|
classpath = files(proguardJarPath)
|
|
}
|
|
|
|
val r8JarPath = "${layout.buildDirectory.get()}/libs/${project.name}-${project.version}-r8.jar"
|
|
val r8Jar by tasks.registering(JavaExec::class) {
|
|
group = "verification"
|
|
dependsOn(tasks.shadowJar)
|
|
notCompatibleWithConfigurationCache("R8")
|
|
|
|
mainClass.set("com.android.tools.r8.R8")
|
|
classpath = buildscript.configurations["classpath"]
|
|
|
|
args = listOf(
|
|
"--release",
|
|
"--classfile",
|
|
"--output", r8JarPath,
|
|
"--lib", System.getProperty("java.home"),
|
|
"--pg-conf", "./test.pro",
|
|
"--pg-conf", "../hanzo-java-core/src/main/resources/META-INF/proguard/hanzo-java-core.pro",
|
|
"--pg-map-output", "${layout.buildDirectory.get()}/r8-mapping.txt",
|
|
tasks.shadowJar.get().archiveFile.get().asFile.absolutePath,
|
|
)
|
|
}
|
|
|
|
val testR8 by tasks.registering(JavaExec::class) {
|
|
group = "verification"
|
|
dependsOn(r8Jar)
|
|
notCompatibleWithConfigurationCache("R8")
|
|
|
|
mainClass.set("ai.hanzo.api.proguard.ProGuardCompatibilityTest")
|
|
classpath = files(r8JarPath)
|
|
}
|
|
|
|
tasks.test {
|
|
dependsOn(testProGuard)
|
|
dependsOn(testR8)
|
|
// We defer to the tests run via the ProGuard JAR.
|
|
enabled = false
|
|
}
|