diff --git a/build.gradle.kts b/build.gradle.kts index c0236376..5f08f665 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -16,8 +16,7 @@ import com.android.build.api.dsl.Lint import com.google.devtools.ksp.gradle.KspTask import com.vanniktech.maven.publish.MavenPublishBaseExtension -import java.net.URI -import org.jetbrains.dokka.gradle.DokkaTask +import org.jetbrains.dokka.gradle.DokkaExtension import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension import org.jetbrains.kotlin.gradle.tasks.KotlinCompile @@ -25,7 +24,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { alias(libs.plugins.kotlinJvm) apply false alias(libs.plugins.ksp) apply false - alias(libs.plugins.dokka) apply false + alias(libs.plugins.dokka) alias(libs.plugins.mavenPublish) apply false alias(libs.plugins.spotless) alias(libs.plugins.kotlinBinaryCompatibilityValidator) @@ -44,6 +43,13 @@ apiValidation { ) } +dokka { + dokkaPublications.html { + outputDirectory.set(rootDir.resolve("docs/api/0.x")) + includes.from(project.layout.projectDirectory.file("README.md")) + } +} + val ktfmtVersion = libs.versions.ktfmt.get() spotless { @@ -108,15 +114,13 @@ subprojects { } pluginManager.withPlugin("com.vanniktech.maven.publish") { apply(plugin = "org.jetbrains.dokka") - tasks.named("dokkaHtml") { - outputDirectory.set(rootProject.rootDir.resolve("docs/0.x")) + configure { + dokkaPublicationDirectory.set(layout.buildDirectory.dir("dokkaDir")) dokkaSourceSets.configureEach { skipDeprecated.set(true) - externalDocumentationLink { - url.set(URI("https://square.github.io/okio/2.x/okio/").toURL()) - } - externalDocumentationLink { - url.set(URI("https://square.github.io/moshi/1.x/moshi/").toURL()) + externalDocumentationLinks { + register("okio") { url("https://square.github.io/okio/2.x/okio/") } + register("moshi") { url("https://square.github.io/moshi/1.x/moshi/") } } } } @@ -136,3 +140,16 @@ subprojects { } } } + +dependencies { + dokka(projects.moshiAdapters) + dokka(projects.moshiImmutableAdapters) + dokka(projects.moshiIr.moshiCompilerPlugin) + dokka(projects.moshiMetadataReflect) + dokka(projects.moshiProguardRuleGen) + dokka(projects.moshiSealed.codegen) + dokka(projects.moshiSealed.javaSealedReflect) + dokka(projects.moshiSealed.metadataReflect) + dokka(projects.moshiSealed.reflect) + dokka(projects.moshiSealed.runtime) +} diff --git a/gradle.properties b/gradle.properties index 1c73f8c0..36fc19dd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -44,3 +44,7 @@ ksp.version.check=false kotlin.compiler.suppressExperimentalICOptimizationsWarning=true kotlin.compiler.keepIncrementalCompilationCachesInMemory=true kotlin.compiler.preciseCompilationResultsBackup=true + +# Dokka flags +org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled +org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3681acf4..fb9635a8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -29,7 +29,7 @@ okhttp = "4.12.0" retrofit = "2.11.0" [plugins] -dokka = { id = "org.jetbrains.dokka", version = "1.9.20" } +dokka = { id = "org.jetbrains.dokka", version = "2.0.0-Beta" } kotlinBinaryCompatibilityValidator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version = "0.16.3" } kotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } diff --git a/moshi-ir/moshi-gradle-plugin/build.gradle.kts b/moshi-ir/moshi-gradle-plugin/build.gradle.kts index 9db8399b..5da60712 100644 --- a/moshi-ir/moshi-gradle-plugin/build.gradle.kts +++ b/moshi-ir/moshi-gradle-plugin/build.gradle.kts @@ -15,7 +15,6 @@ */ import com.vanniktech.maven.publish.MavenPublishBaseExtension -import org.jetbrains.dokka.gradle.DokkaTask import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import org.jetbrains.kotlin.gradle.tasks.KotlinCompile @@ -80,8 +79,11 @@ gradlePlugin { } } -tasks.named("dokkaHtml") { - outputDirectory.set(rootProject.file("../docs/0.x")) +dokka { + dokkaPublications.html { + outputDirectory.set(rootDir.resolve("docs/api/0.x")) + includes.from(project.layout.projectDirectory.file("README.md")) + } dokkaSourceSets.configureEach { skipDeprecated.set(true) } } diff --git a/moshi-ir/moshi-gradle-plugin/gradle.properties b/moshi-ir/moshi-gradle-plugin/gradle.properties index 968ac92d..6976be0a 100644 --- a/moshi-ir/moshi-gradle-plugin/gradle.properties +++ b/moshi-ir/moshi-gradle-plugin/gradle.properties @@ -5,6 +5,10 @@ POM_PACKAGING=jar # Gradle imposes its own kotlin.stdlib.default.dependency=false +# Dokka flags +org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled +org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true + GROUP=dev.zacsweers.moshix VERSION_NAME=0.29.0-SNAPSHOT POM_DESCRIPTION=A Kotlin compiler plugin that generates Moshi JsonAdapter classes. diff --git a/moshi-ir/moshi-gradle-plugin/settings.gradle.kts b/moshi-ir/moshi-gradle-plugin/settings.gradle.kts index 65b15748..ea584b30 100644 --- a/moshi-ir/moshi-gradle-plugin/settings.gradle.kts +++ b/moshi-ir/moshi-gradle-plugin/settings.gradle.kts @@ -29,3 +29,8 @@ dependencyResolutionManagement { google() } } + +rootProject.name = "moshi-gradle-plugin" + +// https://docs.gradle.org/current/userguide/declaring_dependencies.html#sec:type-safe-project-accessors +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") diff --git a/publish.sh b/publish.sh index c6bd7aa7..031181ec 100755 --- a/publish.sh +++ b/publish.sh @@ -3,9 +3,9 @@ if [[ "$1" = "--local" ]]; then local=true; fi if ! [[ ${local} ]]; then - ./gradlew -p moshi-ir/moshi-gradle-plugin publish -x dokkaHtml --no-configuration-cache - ./gradlew publish -x dokkaHtml --no-configuration-cache + ./gradlew -p moshi-ir/moshi-gradle-plugin publish --no-configuration-cache + ./gradlew publish --no-configuration-cache else - ./gradlew -p moshi-ir/moshi-gradle-plugin publishToMavenLocal -x dokkaHtml - ./gradlew publishToMavenLocal -x dokkaHtml + ./gradlew -p moshi-ir/moshi-gradle-plugin publishToMavenLocal + ./gradlew publishToMavenLocal fi \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index df28f755..b4dece88 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -86,3 +86,6 @@ includeBuild("moshi-ir/moshi-gradle-plugin") { substitute(module("dev.zacsweers.moshix:moshi-gradle-plugin")).using(project(":")) } } + +// https://docs.gradle.org/current/userguide/declaring_dependencies.html#sec:type-safe-project-accessors +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")