Add support for publishing JS- and JVM-targeted libraries in top-of-tree
Adds workaround for Gradle bug where metadata and pom dependencies are not
ordered the same between builds by sorting the dependencies in-place.
Test: ./gradlew createDiffArchiveForAndroidxCollection
Fixes: 220313866
Bug: 217412416
Change-Id: I96999eaf9720b86bae426cadf1b279c4fdb27619
diff --git a/buildSrc-tests/src/test/kotlin/androidx/build/MavenUploadHelperTest.kt b/buildSrc-tests/src/test/kotlin/androidx/build/MavenUploadHelperTest.kt
new file mode 100644
index 0000000..81b3e7c
--- /dev/null
+++ b/buildSrc-tests/src/test/kotlin/androidx/build/MavenUploadHelperTest.kt
@@ -0,0 +1,367 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.build
+
+import org.junit.Assert.assertEquals
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+@RunWith(JUnit4::class)
+class MavenUploadHelperTest {
+ @Test
+ fun testSortPomDependencies() {
+ /* ktlint-disable max-line-length */
+ val pom = """
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <!-- This module was also published with a richer model, Gradle metadata, -->
+ <!-- which should be used instead. Do not delete the following line which -->
+ <!-- is to indicate to Gradle or any Gradle module metadata file consumer -->
+ <!-- that they should prefer consuming it instead. -->
+ <!-- do_not_remove: published-with-gradle-metadata -->
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>androidx.collection</groupId>
+ <artifactId>collection-jvm</artifactId>
+ <version>1.3.0-alpha01</version>
+ <name>Android Support Library collections</name>
+ <description>Standalone efficient collections.</description>
+ <url>https://developer.android.com/jetpack/androidx/releases/collection#1.3.0-alpha01</url>
+ <inceptionYear>2018</inceptionYear>
+ <licenses>
+ <license>
+ <name>The Apache Software License, Version 2.0</name>
+ <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+ <distribution>repo</distribution>
+ </license>
+ </licenses>
+ <developers>
+ <developer>
+ <name>The Android Open Source Project</name>
+ </developer>
+ </developers>
+ <scm>
+ <connection>scm:git:https://android.googlesource.com/platform/frameworks/support</connection>
+ <url>https://cs.android.com/androidx/platform/frameworks/support</url>
+ </scm>
+ <dependencies>
+ <dependency>
+ <groupId>org.jetbrains.kotlin</groupId>
+ <artifactId>kotlin-stdlib-common</artifactId>
+ <version>1.6.10</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jetbrains.kotlin</groupId>
+ <artifactId>kotlin-stdlib</artifactId>
+ <version>1.6.10</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>androidx.annotation</groupId>
+ <artifactId>annotation</artifactId>
+ <version>1.3.0</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+</project>
+ """
+
+ val expected = """
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <!-- This module was also published with a richer model, Gradle metadata, -->
+ <!-- which should be used instead. Do not delete the following line which -->
+ <!-- is to indicate to Gradle or any Gradle module metadata file consumer -->
+ <!-- that they should prefer consuming it instead. -->
+ <!-- do_not_remove: published-with-gradle-metadata -->
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>androidx.collection</groupId>
+ <artifactId>collection-jvm</artifactId>
+ <version>1.3.0-alpha01</version>
+ <name>Android Support Library collections</name>
+ <description>Standalone efficient collections.</description>
+ <url>https://developer.android.com/jetpack/androidx/releases/collection#1.3.0-alpha01</url>
+ <inceptionYear>2018</inceptionYear>
+ <licenses>
+ <license>
+ <name>The Apache Software License, Version 2.0</name>
+ <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+ <distribution>repo</distribution>
+ </license>
+ </licenses>
+ <developers>
+ <developer>
+ <name>The Android Open Source Project</name>
+ </developer>
+ </developers>
+ <scm>
+ <connection>scm:git:https://android.googlesource.com/platform/frameworks/support</connection>
+ <url>https://cs.android.com/androidx/platform/frameworks/support</url>
+ </scm>
+ <dependencies>
+ <dependency>
+ <groupId>androidx.annotation</groupId>
+ <artifactId>annotation</artifactId>
+ <version>1.3.0</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jetbrains.kotlin</groupId>
+ <artifactId>kotlin-stdlib-common</artifactId>
+ <version>1.6.10</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jetbrains.kotlin</groupId>
+ <artifactId>kotlin-stdlib</artifactId>
+ <version>1.6.10</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+</project>
+ """
+ /* ktlint-enable max-line-length */
+
+ val actual = sortPomDependencies(pom)
+ assertEquals(expected, actual)
+ }
+
+ @Test
+ fun testSortGradleMetadataDependencies() {
+ /* ktlint-disable max-line-length */
+ val metadata = """
+{
+ "formatVersion": "1.1",
+ "component": {
+ "url": "../../collection/1.3.0-alpha01/collection-1.3.0-alpha01.module",
+ "group": "androidx.collection",
+ "module": "collection",
+ "version": "1.3.0-alpha01",
+ "attributes": {
+ "org.gradle.status": "release"
+ }
+ },
+ "createdBy": {
+ "gradle": {
+ "version": "7.4"
+ }
+ },
+ "variants": [
+ {
+ "name": "jvmApiElements-published",
+ "attributes": {
+ "org.gradle.category": "library",
+ "org.gradle.libraryelements": "jar",
+ "org.gradle.usage": "java-api",
+ "org.jetbrains.kotlin.platform.type": "jvm"
+ },
+ "dependencies": [
+ {
+ "group": "org.jetbrains.kotlin",
+ "module": "kotlin-stdlib",
+ "version": {
+ "requires": "1.6.10"
+ }
+ },
+ {
+ "group": "androidx.annotation",
+ "module": "annotation",
+ "version": {
+ "requires": "1.3.0"
+ }
+ },
+ {
+ "group": "org.jetbrains.kotlin",
+ "module": "kotlin-stdlib-common",
+ "version": {
+ "requires": "1.6.10"
+ }
+ }
+ ],
+ "files": [
+ {
+ "name": "collection-jvm-1.3.0-alpha01.jar",
+ "url": "collection-jvm-1.3.0-alpha01.jar",
+ "size": 42271,
+ "sha512": "b01746682f5499426492ed56cfa10e863b181f0a94e1c97de935a1d68bc1a8da9b60bbc670a71642e4c4ebde0cedbed42f08f6b305bbfa7270b3b1fa76059fa6",
+ "sha256": "647d39d1ef35b45ff9b4c4b2afd7b0280431223142ededb4ee2d3ff73eb2657a",
+ "sha1": "11cbbdeaa0540d0cef16567781a99cdf7b34b242",
+ "md5": "309042f77be5772d725180056e5e97e9"
+ }
+ ]
+ },
+ {
+ "name": "jvmRuntimeElements-published",
+ "attributes": {
+ "org.gradle.category": "library",
+ "org.gradle.libraryelements": "jar",
+ "org.gradle.usage": "java-runtime",
+ "org.jetbrains.kotlin.platform.type": "jvm"
+ },
+ "dependencies": [
+ {
+ "group": "org.jetbrains.kotlin",
+ "module": "kotlin-stdlib",
+ "version": {
+ "requires": "1.6.10"
+ }
+ },
+ {
+ "group": "androidx.annotation",
+ "module": "annotation",
+ "version": {
+ "requires": "1.3.0"
+ }
+ },
+ {
+ "group": "org.jetbrains.kotlin",
+ "module": "kotlin-stdlib-common",
+ "version": {
+ "requires": "1.6.10"
+ }
+ }
+ ],
+ "files": [
+ {
+ "name": "collection-jvm-1.3.0-alpha01.jar",
+ "url": "collection-jvm-1.3.0-alpha01.jar",
+ "size": 42271,
+ "sha512": "b01746682f5499426492ed56cfa10e863b181f0a94e1c97de935a1d68bc1a8da9b60bbc670a71642e4c4ebde0cedbed42f08f6b305bbfa7270b3b1fa76059fa6",
+ "sha256": "647d39d1ef35b45ff9b4c4b2afd7b0280431223142ededb4ee2d3ff73eb2657a",
+ "sha1": "11cbbdeaa0540d0cef16567781a99cdf7b34b242",
+ "md5": "309042f77be5772d725180056e5e97e9"
+ }
+ ]
+ }
+ ]
+}
+ """
+
+ val expected = """
+{
+ "formatVersion": "1.1",
+ "component": {
+ "url": "../../collection/1.3.0-alpha01/collection-1.3.0-alpha01.module",
+ "group": "androidx.collection",
+ "module": "collection",
+ "version": "1.3.0-alpha01",
+ "attributes": {
+ "org.gradle.status": "release"
+ }
+ },
+ "createdBy": {
+ "gradle": {
+ "version": "7.4"
+ }
+ },
+ "variants": [
+ {
+ "name": "jvmApiElements-published",
+ "attributes": {
+ "org.gradle.category": "library",
+ "org.gradle.libraryelements": "jar",
+ "org.gradle.usage": "java-api",
+ "org.jetbrains.kotlin.platform.type": "jvm"
+ },
+ "dependencies": [
+ {
+ "group": "androidx.annotation",
+ "module": "annotation",
+ "version": {
+ "requires": "1.3.0"
+ }
+ },
+ {
+ "group": "org.jetbrains.kotlin",
+ "module": "kotlin-stdlib",
+ "version": {
+ "requires": "1.6.10"
+ }
+ },
+ {
+ "group": "org.jetbrains.kotlin",
+ "module": "kotlin-stdlib-common",
+ "version": {
+ "requires": "1.6.10"
+ }
+ }
+ ],
+ "files": [
+ {
+ "name": "collection-jvm-1.3.0-alpha01.jar",
+ "url": "collection-jvm-1.3.0-alpha01.jar",
+ "size": 42271,
+ "sha512": "b01746682f5499426492ed56cfa10e863b181f0a94e1c97de935a1d68bc1a8da9b60bbc670a71642e4c4ebde0cedbed42f08f6b305bbfa7270b3b1fa76059fa6",
+ "sha256": "647d39d1ef35b45ff9b4c4b2afd7b0280431223142ededb4ee2d3ff73eb2657a",
+ "sha1": "11cbbdeaa0540d0cef16567781a99cdf7b34b242",
+ "md5": "309042f77be5772d725180056e5e97e9"
+ }
+ ]
+ },
+ {
+ "name": "jvmRuntimeElements-published",
+ "attributes": {
+ "org.gradle.category": "library",
+ "org.gradle.libraryelements": "jar",
+ "org.gradle.usage": "java-runtime",
+ "org.jetbrains.kotlin.platform.type": "jvm"
+ },
+ "dependencies": [
+ {
+ "group": "androidx.annotation",
+ "module": "annotation",
+ "version": {
+ "requires": "1.3.0"
+ }
+ },
+ {
+ "group": "org.jetbrains.kotlin",
+ "module": "kotlin-stdlib",
+ "version": {
+ "requires": "1.6.10"
+ }
+ },
+ {
+ "group": "org.jetbrains.kotlin",
+ "module": "kotlin-stdlib-common",
+ "version": {
+ "requires": "1.6.10"
+ }
+ }
+ ],
+ "files": [
+ {
+ "name": "collection-jvm-1.3.0-alpha01.jar",
+ "url": "collection-jvm-1.3.0-alpha01.jar",
+ "size": 42271,
+ "sha512": "b01746682f5499426492ed56cfa10e863b181f0a94e1c97de935a1d68bc1a8da9b60bbc670a71642e4c4ebde0cedbed42f08f6b305bbfa7270b3b1fa76059fa6",
+ "sha256": "647d39d1ef35b45ff9b4c4b2afd7b0280431223142ededb4ee2d3ff73eb2657a",
+ "sha1": "11cbbdeaa0540d0cef16567781a99cdf7b34b242",
+ "md5": "309042f77be5772d725180056e5e97e9"
+ }
+ ]
+ }
+ ]
+}
+ """
+ /* ktlint-enable max-line-length */
+
+ val actual = sortGradleMetadataDependencies(metadata)
+ assertEquals(expected, actual)
+ }
+}
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXExtension.kt b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXExtension.kt
index 77a0c16..fc05633 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXExtension.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXExtension.kt
@@ -16,7 +16,6 @@
package androidx.build
-import androidx.build.Multiplatform.Companion.isMultiplatformEnabled
import androidx.build.checkapi.shouldConfigureApiTasks
import groovy.lang.Closure
import org.gradle.api.GradleException
@@ -186,12 +185,28 @@
var bypassCoordinateValidation = false
- var multiplatform: Boolean
+ /**
+ * Which KMP platforms are published by this project, as a list of artifact suffixes or an empty
+ * list for non-KMP projects.
+ *
+ * Setting this property to a non-empty list also sets the [multiplatform] property to `true`.
+ */
+ var publishPlatforms: List<String> = emptyList()
+ set(value) {
+ multiplatform = value.isNotEmpty()
+ field = value
+ }
+
+ /**
+ * Whether this project uses KMP.
+ *
+ * Consider setting the [publishPlatforms] property instead to ensure KMP artifacts are
+ * published.
+ */
+ var multiplatform: Boolean = false
set(value) {
Multiplatform.setEnabledForProject(project, value)
- }
- get() {
- return project.isMultiplatformEnabled()
+ field = value
}
fun shouldEnforceKotlinStrictApiMode(): Boolean {
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/MavenUploadHelper.kt b/buildSrc/private/src/main/kotlin/androidx/build/MavenUploadHelper.kt
index ec8d670..f96b9a5 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/MavenUploadHelper.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/MavenUploadHelper.kt
@@ -34,6 +34,7 @@
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
import java.io.File
+import org.gradle.api.publish.maven.tasks.GenerateMavenPom
fun Project.configureMavenArtifactUpload(extension: AndroidXExtension) {
apply(mapOf("plugin" to "maven-publish"))
@@ -112,6 +113,30 @@
// Register it as part of release so that we create a Zip file for it
Release.register(this, extension)
+ // Workarounds for https://github.com/gradle/gradle/issues/20011
+ project.tasks.withType(GenerateModuleMetadata::class.java).configureEach { task ->
+ task.doLast {
+ val metadataFile = task.outputFile.asFile.get()
+ val metadata = metadataFile.readText()
+ val sortedMetadata = sortGradleMetadataDependencies(metadata)
+
+ if (metadata != sortedMetadata) {
+ metadataFile.writeText(sortedMetadata)
+ }
+ }
+ }
+ project.tasks.withType(GenerateMavenPom::class.java).configureEach { task ->
+ task.doLast {
+ val pomFile = task.destination
+ val pom = pomFile.readText()
+ val sortedPom = sortPomDependencies(pom)
+
+ if (pom != sortedPom) {
+ pomFile.writeText(sortedPom)
+ }
+ }
+ }
+
// Workaround for https://github.com/gradle/gradle/issues/11717
project.tasks.withType(GenerateModuleMetadata::class.java).configureEach { task ->
task.doLast {
@@ -132,6 +157,60 @@
}
}
+/**
+ * Looks for a dependencies XML element within [pom] and sorts its contents.
+ */
+fun sortPomDependencies(pom: String): String {
+ var sortedPom = pom
+ val regex = "(?s)<dependencies>\\n(.+?)<\\/dependency>\\s+<\\/dependencies>".toRegex()
+
+ var results = regex.findAll(pom)
+ results.forEach { result ->
+ val depsGroup = result.groups[1]
+ if (depsGroup != null) {
+ val depsRange = depsGroup.range
+ val deps = depsGroup.value
+ val sortedDeps = deps
+ .split("</dependency>\n")
+ .sorted()
+ .joinToString("</dependency>\n")
+
+ if (deps != sortedDeps) {
+ sortedPom = sortedPom.replaceRange(depsRange, sortedDeps)
+ }
+ }
+ }
+
+ return sortedPom
+}
+
+/**
+ * Looks for a dependencies JSON element within [metadata] and sorts its contents.
+ */
+fun sortGradleMetadataDependencies(metadata: String): String {
+ var sortedMetadata = metadata
+ val regex = "(?s)\"dependencies\": \\[\\n(.+?)}\\s+]".toRegex()
+
+ var results = regex.findAll(metadata)
+ results.forEach { result ->
+ val depsGroup = result.groups[1]
+ if (depsGroup != null) {
+ val depsRange = depsGroup.range
+ val deps = depsGroup.value
+ val sortedDeps = deps
+ .split("},\n")
+ .sorted()
+ .joinToString("},\n")
+
+ if (deps != sortedDeps) {
+ sortedMetadata = sortedMetadata.replaceRange(depsRange, sortedDeps)
+ }
+ }
+ }
+
+ return sortedMetadata
+}
+
private fun Project.isMultiplatformPublicationEnabled(): Boolean {
if (!project.isMultiplatformEnabled())
return false
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/Release.kt b/buildSrc/private/src/main/kotlin/androidx/build/Release.kt
index ce93935..ccb3d9b 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/Release.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/Release.kt
@@ -188,15 +188,12 @@
getGroupReleaseZipTask(project, mavenGroup),
getGlobalFullZipTask(project)
)
- val artifact = Artifact(
- mavenGroup = mavenGroup,
- projectName = project.name,
- version = version.toString()
- )
+
+ val artifacts = extension.publishedArtifacts
val publishTask = project.tasks.named("publish")
zipTasks.forEach {
it.configure { zipTask ->
- zipTask.addCandidate(artifact)
+ artifacts.forEach { artifact -> zipTask.addCandidate(artifact) }
// Add additional artifacts needed for Gradle Plugins
if (extension.type == LibraryType.GRADLE_PLUGIN) {
@@ -333,6 +330,30 @@
}
}
+val AndroidXExtension.publishedArtifacts: List<Artifact>
+ get() {
+ val groupString = mavenGroup?.group!!
+ val versionString = project.version.toString()
+ val artifacts = mutableListOf(
+ Artifact(
+ mavenGroup = groupString,
+ projectName = project.name,
+ version = versionString
+ )
+ )
+
+ // Add platform-specific artifacts, if necessary.
+ artifacts += publishPlatforms.map { suffix ->
+ Artifact(
+ mavenGroup = groupString,
+ projectName = "${project.name}-$suffix",
+ version = versionString
+ )
+ }
+
+ return artifacts
+ }
+
/**
* Converts the maven group into a readable task name.
*/
diff --git a/collection/collection/build.gradle b/collection/collection/build.gradle
index f878f54..12369f29 100644
--- a/collection/collection/build.gradle
+++ b/collection/collection/build.gradle
@@ -61,5 +61,5 @@
mavenGroup = LibraryGroups.COLLECTION
inceptionYear = "2018"
description = "Standalone efficient collections."
- multiplatform = true
+ publishPlatforms = ["jvm"]
}
diff --git a/collection2/collection2/build.gradle b/collection2/collection2/build.gradle
index ab99a7f..535b1dc 100644
--- a/collection2/collection2/build.gradle
+++ b/collection2/collection2/build.gradle
@@ -16,7 +16,6 @@
import androidx.build.Publish
-import androidx.build.RunApiTasks
import me.champeau.gradle.japicmp.JapicmpTask
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile
@@ -186,6 +185,9 @@
sourceSets.test.java.srcDir('../../collection/collection/src/test/java')
}
+def targetPlatformsList = ["jvm"]
+if (enableJs) targetPlatformsList += "js"
+
androidx {
name = "Android Support Library collections"
publish = Publish.SNAPSHOT_AND_RELEASE
@@ -193,7 +195,7 @@
inceptionYear = "2020"
description = "Standalone efficient collections."
legacyDisableKotlinStrictApiMode = true // TODO: Re-enable this!
- multiplatform = true
+ publishPlatforms = targetPlatformsList
}
repositories {
diff --git a/development/build_log_simplifier/messages.ignore b/development/build_log_simplifier/messages.ignore
index 10ad55d..ba3929a 100644
--- a/development/build_log_simplifier/messages.ignore
+++ b/development/build_log_simplifier/messages.ignore
@@ -283,6 +283,8 @@
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org\.robolectric\.util\.ReflectionHelpers\$[0-9]+ \(file:\$CHECKOUT/prebuilts/androidx/external/org/robolectric/shadowapi/[0-9]+\.[0-9]+\.[0-9]+/shadowapi\-[0-9]+\.[0-9]+\.[0-9]+\.jar\) to field java\.io\.FileDescriptor\.fd
WARNING: Please consider reporting this to the maintainers of org\.robolectric\.util\.ReflectionHelpers\$[0-9]+
+WARNING: Illegal reflective access by org\.jetbrains\.kotlin\.kapt[0-9]+\.util\.ModuleManipulationUtilsKt \(file:\$CHECKOUT/prebuilts/androidx/external/org/jetbrains/kotlin/kotlin\-annotation\-processing\-gradle/[0-9]+\.[0-9]+\.[0-9]+/kotlin\-annotation\-processing\-gradle\-[0-9]+\.[0-9]+\.[0-9]+\.jar\) to constructor com\.sun\.tools\.javac\.util\.Context\(\)
+WARNING: Please consider reporting this to the maintainers of org\.jetbrains\.kotlin\.kapt[0-9]+\.util\.ModuleManipulationUtilsKt
WARNING: Please consider reporting this to the maintainers of org\.jetbrains\.kotlin\.kapt[0-9]+\.base\.javac\.KaptJavaFileManager
WARNING: Illegal reflective access by com\.intellij\.util\.ReflectionUtil \(file:\$CHECKOUT/prebuilts/androidx/external/com/google/devsite/dackka/[0-9]+\.[0-9]+\.[0-9]+/dackka\-[0-9]+\.[0-9]+\.[0-9]+\.jar\) to method java\.util\.ResourceBundle\.setParent\(java\.util\.ResourceBundle\)
WARNING: Please consider reporting this to the maintainers of com\.intellij\.util\.ReflectionUtil
@@ -591,4 +593,10 @@
w: \[ksp\] \$SUPPORT/room/integration\-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/JvmNameInDaoTest\.kt:[0-9]+: Using @JvmName annotation on a function or accessor that will be overridden by Room is not supported\. If this is important for your use case, please file a bug at https://issuetracker\.google\.com/issues/new\?component=[0-9]+ with details\.
# > Task :room:integration-tests:room-testapp-kotlin:kaptWithKaptDebugAndroidTestKotlin
\$OUT_DIR/androidx/room/integration\-tests/room\-testapp\-kotlin/build/tmp/kapt[0-9]+/stubs/withKaptDebugAndroidTest/androidx/room/androidx/room/integration/kotlintestapp/test/JvmNameInDaoTest\.java:[0-9]+: warning: Using @JvmName annotation on a function or accessor that will be overridden by Room is not supported\. If this is important for your use case, please file a bug at https://issuetracker\.google\.com/issues/new\?component=[0-9]+ with details\.
-public abstract androidx\.room\.androidx\.room\.integration\.kotlintestapp\.test\.JvmNameInDaoTest\.JvmNameDao jvmDao\(\);
\ No newline at end of file
+public abstract androidx\.room\.androidx\.room\.integration\.kotlintestapp\.test\.JvmNameInDaoTest\.JvmNameDao jvmDao\(\);
+# > Task :hilt:integration-tests:hilt-testapp-worker:kaptGenerateStubsDebugUnitTestKotlin
+at org\.jetbrains\.kotlin\.compilerRunner\.GradleCompilerRunner\.runCompilerAsync\(GradleKotlinCompilerRunner\.kt:[0-9]+\)
+at org\.jetbrains\.kotlin\.compilerRunner\.GradleCompilerRunner\.runJvmCompilerAsync\(GradleKotlinCompilerRunner\.kt:[0-9]+\)
+at org\.jetbrains\.kotlin\.gradle\.tasks\.KotlinCompile\.callCompilerAsync\$kotlin_gradle_plugin\(Tasks\.kt:[0-9]+\)
+at org\.jetbrains\.kotlin\.gradle\.tasks\.AbstractKotlinCompile\.executeImpl\(Tasks\.kt:[0-9]+\)
+at org\.jetbrains\.kotlin\.gradle\.tasks\.AbstractKotlinCompile\.execute\(Tasks\.kt:[0-9]+\)