diff --git a/firebase-dataconnect/firebase-dataconnect.gradle.kts b/firebase-dataconnect/firebase-dataconnect.gradle.kts index c4f115bece9..cb83540f353 100644 --- a/firebase-dataconnect/firebase-dataconnect.gradle.kts +++ b/firebase-dataconnect/firebase-dataconnect.gradle.kts @@ -28,6 +28,7 @@ firebaseLibrary { libraryGroup = "dataconnect" testLab.enabled = false publishJavadoc = true + onlyPublishKotlindoc = true releaseNotes { name.set("{{data_connect_short}}") versionName.set("data-connect") diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt index 6411a0953d8..f856f3257a7 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt @@ -56,6 +56,7 @@ abstract class BaseFirebaseLibraryPlugin : Plugin { project.gradle.sharedServices.registerIfAbsent("gmaven") previewMode.convention("") publishJavadoc.convention(true) + onlyPublishKotlindoc.convention(false) artifactId.convention(project.name) groupId.convention(project.provider { project.group.toString() }) libraryGroup.convention(artifactId) diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/DackkaGenerationTask.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/DackkaGenerationTask.kt index 5e6c503ee94..e5931ab82d3 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/DackkaGenerationTask.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/DackkaGenerationTask.kt @@ -19,6 +19,7 @@ package com.google.firebase.gradle.plugins import java.io.File import javax.inject.Inject import org.gradle.api.DefaultTask +import org.gradle.api.Project import org.gradle.api.file.FileCollection import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.ListProperty @@ -120,7 +121,8 @@ constructor(private val workerExecutor: WorkerExecutor) : GenerateDocumentationT "java.lang.Override", ) val annotationsNotToDisplayKotlin = listOf("kotlin.ExtensionFunctionType") - + // A null path disables javadoc generation + val javadocPath: String? = "android".takeUnless { publishKotlindocOnly(project) } val jsonMap = mapOf( "moduleName" to "", @@ -152,7 +154,7 @@ constructor(private val workerExecutor: WorkerExecutor) : GenerateDocumentationT JSONObject( mapOf( "docRootPath" to "/docs/reference/", - "javaDocsPath" to "android", + "javaDocsPath" to javadocPath, "kotlinDocsPath" to "kotlin", "projectPath" to "client/${clientName.get()}", "includedHeadTagsPathJava" to @@ -171,6 +173,14 @@ constructor(private val workerExecutor: WorkerExecutor) : GenerateDocumentationT return JSONObject(jsonMap) } + /** + * Checks if the [Project] should only release Kotlindocs + * + * This is done via the [FirebaseLibraryExtension.onlyPublishKotlindoc] property. + */ + private fun publishKotlindocOnly(project: Project) = + project.firebaseLibrary.onlyPublishKotlindoc.get() + private fun createExternalLinks( packageLists: ListProperty ): List { diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseLibraryExtension.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseLibraryExtension.kt index ecc69e0e5a4..d005752282c 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseLibraryExtension.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseLibraryExtension.kt @@ -69,6 +69,22 @@ constructor(val project: Project, val type: LibraryType) { */ abstract val publishJavadoc: Property + /** + * Only publish Kotlindocs instead of also publishing Javadocs for this library. + * + * This property is only effective when `publishJavadoc` is `true`. + * + * Defaults to `false`. + * + * ```sh + * ./gradlew :firebase-common:kotlindoc + * ``` + * + * @see [FirebaseLibraryExtension] + * @see publishJavadoc + */ + abstract val onlyPublishKotlindoc: Property + /** * Indicates the library is in a preview mode (such as `alpha` or `beta`). *