Include compiled sources in Java Kzip generation for complete indexing
This ensures java code in mixed Java and Kotlin projects is indexed
TESTED: Ran ./gradlew :core:Core:gJK and the kzip was non-empty
Change-Id: I464ddd3d824e69f497c9e887d9b887ca017cf731
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/kythe/GenerateJavaKzipTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/kythe/GenerateJavaKzipTask.kt
index fb20b69..656e1b4 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/kythe/GenerateJavaKzipTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/kythe/GenerateJavaKzipTask.kt
@@ -23,6 +23,7 @@
import javax.inject.Inject
import org.gradle.api.DefaultTask
import org.gradle.api.Project
+import org.gradle.api.artifacts.Configuration
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.RegularFileProperty
@@ -67,6 +68,8 @@
@get:Classpath abstract val dependencyClasspath: ConfigurableFileCollection
+ @get:Classpath abstract val compiledSources: ConfigurableFileCollection
+
@get:Classpath abstract val annotationProcessor: ConfigurableFileCollection
@get:OutputFile abstract val kzipOutputFile: RegularFileProperty
@@ -76,19 +79,25 @@
@TaskAction
fun exec() {
val sourceFiles =
- if (sourcePaths.asFileTree.files.none { it.extension == "kt" }) {
- sourcePaths.asFileTree.files
- .filter { it.extension == "java" }
- .map { it.relativeTo(checkoutRoot) }
- } else {
- emptyList()
- }
+ sourcePaths.asFileTree.files
+ .filter { it.extension == "java" }
+ .map { it.relativeTo(checkoutRoot) }
if (sourceFiles.isEmpty()) {
return
}
- val dependencyClasspath = dependencyClasspath.filter { it.extension == "jar" }
+ val dependencyClasspath =
+ dependencyClasspath
+ .filter { it.extension == "jar" }
+ .let { filteredClasspath ->
+ if (sourcePaths.asFileTree.files.any { it.extension == "kt" }) {
+ filteredClasspath + compiledSources
+ } else {
+ filteredClasspath
+ }
+ }
+
val kytheBuildDirectory = kytheBuildDirectory.get().asFile.apply { mkdirs() }
execOperations.javaexec {
@@ -128,6 +137,7 @@
fun setupProject(
project: Project,
javaInputs: JavaCompileInputs,
+ compiledSources: Configuration,
) {
val annotationProcessorPaths =
project.objects.fileCollection().apply {
@@ -157,6 +167,7 @@
dependencyClasspath.setFrom(
javaInputs.dependencyClasspath + javaInputs.bootClasspath
)
+ this.compiledSources.setFrom(compiledSources)
kzipOutputFile.set(
project.layout.buildDirectory.file(
"kzips/${project.group}-${project.name}.java.kzip"
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/kythe/KzipTasks.kt b/buildSrc/private/src/main/kotlin/androidx/build/kythe/KzipTasks.kt
index 65a84d0..481acc4 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/kythe/KzipTasks.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/kythe/KzipTasks.kt
@@ -69,7 +69,7 @@
getDefaultTargetJavaVersion(extension.type, project.name)
)
- GenerateJavaKzipTask.setupProject(project, javaInputs)
+ GenerateJavaKzipTask.setupProject(project, javaInputs, compiledSources)
}
}
diff --git a/buildSrc/vnames.json b/buildSrc/vnames.json
index de3b27e..31eee97 100644
--- a/buildSrc/vnames.json
+++ b/buildSrc/vnames.json
@@ -7,14 +7,7 @@
}
},
{
- "pattern": "^prebuilts/androidx/external/(.*)",
- "vname": {
- "root": "out",
- "path": "@1@"
- }
- },
- {
- "pattern": "^prebuilts/androidx/internal/(.*)",
+ "pattern": "^prebuilts/(.*)",
"vname": {
"root": "out",
"path": "@1@"