diff --git a/build.gradle.kts b/build.gradle.kts index 806d273ad..f81d8bf31 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.spotless) apply false alias(libs.plugins.kotlin.android) apply false alias(libs.plugins.compose.compiler) apply false + alias(libs.plugins.dokka) apply false } subprojects { @@ -20,6 +21,23 @@ subprojects { endWithNewline() } } + + plugins.withId("com.android.library") { + // Use Dokka plugin instead of AGP embedded Dokka (ASM9 issue). + pluginManager.apply("org.jetbrains.dokka") + + tasks.matching { it.name == "javaDocReleaseGeneration" }.configureEach { + dependsOn("dokkaJavadoc") + actions.clear() + doLast { + val from = layout.buildDirectory.dir("dokka/dokkaJavadoc").get().asFile + val to = layout.buildDirectory.dir("intermediates/javadoc/release").get().asFile + if (from.exists()) { + from.copyRecursively(to, overwrite = true) + } + } + } + } } tasks.withType { diff --git a/examples/android/build.gradle b/examples/android/build.gradle index db62c7e76..9838b3778 100644 --- a/examples/android/build.gradle +++ b/examples/android/build.gradle @@ -25,11 +25,11 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = JavaVersion.VERSION_1_8 + jvmTarget = "17" } packaging { resources { diff --git a/examples/wearos/build.gradle b/examples/wearos/build.gradle index 3de832719..bc54155fa 100644 --- a/examples/wearos/build.gradle +++ b/examples/wearos/build.gradle @@ -24,11 +24,11 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = JavaVersion.VERSION_1_8 + jvmTarget = "17" freeCompilerArgs += [ '-opt-in=kotlinx.serialization.InternalSerializationApi', ] diff --git a/extensions/android-loading/build.gradle.kts b/extensions/android-loading/build.gradle.kts index b6193ba82..f602debb6 100644 --- a/extensions/android-loading/build.gradle.kts +++ b/extensions/android-loading/build.gradle.kts @@ -14,8 +14,8 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } testOptions.unitTests.apply { @@ -26,7 +26,7 @@ android { tasks.withType().configureEach { compilerOptions { - jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8) + jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) freeCompilerArgs.addAll(listOf("-Xexplicit-api=strict")) } } diff --git a/extensions/android-paging3/build.gradle.kts b/extensions/android-paging3/build.gradle.kts index c78f51dd2..7019f04bb 100644 --- a/extensions/android-paging3/build.gradle.kts +++ b/extensions/android-paging3/build.gradle.kts @@ -2,6 +2,7 @@ plugins { id("com.android.library") id("kotlin-android") id("com.vanniktech.maven.publish") + id("org.jetbrains.dokka") version "1.9.20" } android { @@ -14,8 +15,8 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } testOptions.unitTests.apply { @@ -26,7 +27,7 @@ android { tasks.withType().configureEach { compilerOptions { - jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8) + jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) freeCompilerArgs.addAll(listOf( "-Xopt-in=com.algolia.instantsearch.ExperimentalInstantSearch", "-Xopt-in=com.algolia.instantsearch.InternalInstantSearch", @@ -35,6 +36,19 @@ tasks.withType().configureEach } } +tasks.matching { it.name == "javaDocReleaseGeneration" }.configureEach { + dependsOn("dokkaJavadoc") + // Replace AGP's embedded Dokka execution to avoid ASM9 parsing failures. + actions.clear() + doLast { + val from = layout.buildDirectory.dir("dokka/dokkaJavadoc").get().asFile + val to = layout.buildDirectory.dir("intermediates/javadoc/release").get().asFile + if (from.exists()) { + from.copyRecursively(to, overwrite = true) + } + } +} + dependencies { api(project(":instantsearch")) api(libs.androidx.paging3) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 84f5fdfdc..2c05640e4 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -61,3 +61,4 @@ android = { id = "com.android.library", version = "8.7.2" } maven-publish = { id = "com.vanniktech.maven.publish", version = "0.34.0" } spotless = { id = "com.diffplug.gradle.spotless", version = "6.16.0" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +dokka = { id = "org.jetbrains.dokka", version = "1.9.20" } diff --git a/instantsearch-compose/build.gradle.kts b/instantsearch-compose/build.gradle.kts index 29f5afc53..d28affd8f 100644 --- a/instantsearch-compose/build.gradle.kts +++ b/instantsearch-compose/build.gradle.kts @@ -15,8 +15,8 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } buildFeatures { @@ -33,7 +33,7 @@ android { tasks.withType().configureEach { compilerOptions { - jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8) + jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) freeCompilerArgs.addAll(listOf("-Xexplicit-api=strict", "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi")) } } diff --git a/instantsearch-core/build.gradle.kts b/instantsearch-core/build.gradle.kts index cbc4d44cc..fbf134d45 100644 --- a/instantsearch-core/build.gradle.kts +++ b/instantsearch-core/build.gradle.kts @@ -43,6 +43,6 @@ kotlin { tasks.withType().configureEach { compilerOptions { - jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8) + jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) } } diff --git a/instantsearch-insights/build.gradle.kts b/instantsearch-insights/build.gradle.kts index 0749ba301..ff213392d 100644 --- a/instantsearch-insights/build.gradle.kts +++ b/instantsearch-insights/build.gradle.kts @@ -15,8 +15,8 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } testOptions.unitTests.apply { @@ -103,6 +103,6 @@ kotlin { tasks.withType().configureEach { compilerOptions { - jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8) + jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) } } diff --git a/instantsearch-utils/build.gradle.kts b/instantsearch-utils/build.gradle.kts index a1c7e8255..a235504dd 100644 --- a/instantsearch-utils/build.gradle.kts +++ b/instantsearch-utils/build.gradle.kts @@ -14,8 +14,8 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } testOptions.unitTests.apply { @@ -51,7 +51,7 @@ kotlin { tasks.withType().configureEach { compilerOptions { - jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8) + jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) } } diff --git a/instantsearch/build.gradle.kts b/instantsearch/build.gradle.kts index c0d2158ad..b0a0e8cb2 100644 --- a/instantsearch/build.gradle.kts +++ b/instantsearch/build.gradle.kts @@ -15,8 +15,8 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } testOptions.unitTests.apply { @@ -98,6 +98,6 @@ kotlin { tasks.withType().configureEach { compilerOptions { - jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8) + jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) } }