plugins {
id("openai.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(":openai-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("../openai-java-core/src/main/resources/META-INF/proguard/openai-java-core.pro")
}
val testProGuard by tasks.registering(JavaExec::class) {
group = "verification"
dependsOn(proguardJar)
notCompatibleWithConfigurationCache("ProGuard")
mainClass.set("com.openai.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", "../openai-java-core/src/main/resources/META-INF/proguard/openai-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("com.openai.proguard.ProGuardCompatibilityTest")
classpath = files(r8JarPath)
}
tasks.test {
dependsOn(testProGuard)
dependsOn(testR8)
// We defer to the tests run via the ProGuard JAR.
enabled = false
}openai/openai-java
Publicmirrored from https://github.com/openai/openai-javaAvailable
openai-java-proguard-test/build.gradle.kts
101lines · modepreview