diff --git a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/DackkaPlugin.kt b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/DackkaPlugin.kt index b274ca52b76..6781e0b724d 100644 --- a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/DackkaPlugin.kt +++ b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/DackkaPlugin.kt @@ -168,6 +168,7 @@ abstract class DackkaPlugin : Plugin { val classpath = compileConfiguration.getJars() + project.javadocConfig.getJars() + project.files(bootClasspath) val sourcesForJava = sourceSets.flatMap { + // TODO(b/246984444): Investigate why kotlinDirectories includes javaDirectories it.javaDirectories.map { it.absoluteFile } } @@ -177,13 +178,12 @@ abstract class DackkaPlugin : Plugin { } docsTask.configure { - clientName.set(project.firebaseConfigValue { artifactId }) - // this will become useful with the agp upgrade, as they're separate in 7.x+ - val sourcesForKotlin = emptyList() + if (!isKotlin) dependsOn(docStubs) + + val sourcesForKotlin = emptyList() + projectSpecificSources(project) val packageLists = fetchPackageLists(project) - if (!isKotlin) dependsOn(docStubs) - val excludedFiles = if (!isKotlin) projectSpecificSuppressedFiles(project) else emptyList() + val excludedFiles = projectSpecificSuppressedFiles(project) val fixedJavaSources = if (!isKotlin) listOf(project.docStubs) else sourcesForJava javaSources.set(fixedJavaSources) @@ -206,11 +206,20 @@ abstract class DackkaPlugin : Plugin { include("**/package-list") }.toList() + // TODO(b/243534168): Remove when fixed + private fun projectSpecificSources(project: Project) = + when (project.name) { + "firebase-common" -> { + project.project(":firebase-firestore").files("src/main/java/com/google/firebase").toList() + } + else -> emptyList() + } + // TODO(b/243534168): Remove when fixed private fun projectSpecificSuppressedFiles(project: Project): List = when (project.name) { "firebase-common" -> { - project.files("${project.docStubs}/com/google/firebase/firestore").toList() + project.project(":firebase-firestore").files("src/main/java/com/google/firebase/firestore").toList() } "firebase-firestore" -> { project.files("${project.docStubs}/com/google/firebase/Timestamp.java").toList() @@ -226,6 +235,7 @@ abstract class DackkaPlugin : Plugin { dackkaJarFile.set(dackkaFile) outputDirectory.set(dackkaOutputDirectory) + clientName.set(project.firebaseConfigValue { artifactId }) } // TODO(b/243833009): Make task cacheable diff --git a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/ProjectUtils.kt b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/ProjectUtils.kt index 1bd001f67f8..4f21e57a127 100644 --- a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/ProjectUtils.kt +++ b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/ProjectUtils.kt @@ -17,6 +17,7 @@ import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.attributes.Attribute +import org.gradle.api.provider.Provider fun Project.isAndroid(): Boolean = listOf("com.android.application", "com.android.library", "com.android.test") @@ -63,6 +64,14 @@ fun T.dependsOnAndMustRunAfter(otherTask: R) { dependsOn(otherTask) } +/** + * Utility method to call [Task.mustRunAfter] and [Task.dependsOn] on the specified task + */ +fun T.dependsOnAndMustRunAfter(otherTask: Provider) { + mustRunAfter(otherTask) + dependsOn(otherTask) +} + /** * Utility method to call [Task.mustRunAfter] and [Task.dependsOn] on the specified task name */