Merge "Shadow / jarjar kotlinx-metadata-jvm in room-compiler-processing." into androidx-main am: 20d34810f7
Original change: https://android-review.googlesource.com/c/platform/frameworks/support/+/2584530
Change-Id: I0e251cd3f0dad4aed9f7848d5be366cdf4ab49a2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/room/room-compiler-processing/build.gradle b/room/room-compiler-processing/build.gradle
index 6f522c7..f8d3190 100644
--- a/room/room-compiler-processing/build.gradle
+++ b/room/room-compiler-processing/build.gradle
@@ -20,6 +20,42 @@
plugins {
id("AndroidXPlugin")
id("kotlin")
+ id("com.github.johnrengelman.shadow")
+}
+
+configurations {
+ // For shadowed / jarjared deps
+ shadowed
+ // shadowed deps are compile only deps
+ compileOnly.extendsFrom(shadowed)
+ // compiler tests don't use shadowed, so include them
+ testCompile.extendsFrom(shadowed)
+ // for downstream tests
+ shadowAndImplementation.extendsFrom(shadow)
+ shadowAndImplementation.extendsFrom(implementation)
+}
+
+shadowJar {
+ archiveClassifier = ""
+ configurations = [project.configurations.shadowed]
+ relocate("kotlinx.metadata", "androidx.room.jarjarred.kotlinx.metadata")
+ mergeServiceFiles() // kotlinx-metadata-jvm has a service descriptor that needs transformation
+}
+
+jar {
+ archiveClassifier = "before-jarjar"
+}
+
+configurations {
+ // replace the standard jar with the one built by 'shadowJar' in both api and runtime variants
+ apiElements.outgoing.artifacts.clear()
+ apiElements.outgoing.artifact(shadowJar) {
+ builtBy shadowJar
+ }
+ runtimeElements.outgoing.artifacts.clear()
+ runtimeElements.outgoing.artifact(shadowJar) {
+ builtBy shadowJar
+ }
}
dependencies {
@@ -30,8 +66,9 @@
implementation(libs.guava)
implementation(libs.autoCommon)
implementation(libs.autoValueAnnotations)
-
- implementation(libs.kotlinMetadataJvm)
+ shadowed(libs.kotlinMetadataJvm) {
+ exclude group: "org.jetbrains.kotlin", module: "kotlin-stdlib"
+ }
implementation(libs.intellijAnnotations)
implementation(libs.kspApi)
implementation(libs.kotlinStdlibJdk8) // KSP defines older version as dependency, force update.
@@ -41,6 +78,7 @@
testImplementation(libs.junit)
testImplementation(libs.jsr250)
testImplementation(libs.ksp)
+ testImplementation(libs.kotlinMetadataJvm)
testImplementation(project(":room:room-compiler-processing-testing"))
testImplementation(project(":internal-testutils-common"))
}