Skip to content

Commit 8f043c2

Browse files
committed
Add generated resource dir to proper sources and outputs
So that it can be picked up by compilation and jar tasks.
1 parent 42d7fe6 commit 8f043c2

File tree

1 file changed

+13
-8
lines changed
  • gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle

1 file changed

+13
-8
lines changed

gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt

+13-8
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,17 @@ import org.gradle.api.Project
2222
import org.gradle.api.Task
2323
import org.gradle.api.UnknownTaskException
2424
import org.gradle.api.artifacts.Configuration
25+
import org.gradle.api.file.ConfigurableFileCollection
2526
import org.gradle.api.provider.Provider
27+
import org.gradle.api.tasks.SourceSetOutput
2628
import org.gradle.api.tasks.TaskProvider
2729
import org.gradle.api.tasks.compile.JavaCompile
2830
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
2931
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
30-
import org.jetbrains.kotlin.gradle.plugin.FilesSubpluginOption
31-
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
32-
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilerPluginSupportPlugin
33-
import org.jetbrains.kotlin.gradle.plugin.SubpluginArtifact
34-
import org.jetbrains.kotlin.gradle.plugin.SubpluginOption
35-
import org.jetbrains.kotlin.gradle.plugin.mapClasspath
32+
import org.jetbrains.kotlin.gradle.plugin.*
3633
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation
3734
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmCompilation
3835
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaCompilation
39-
import org.jetbrains.kotlin.gradle.tasks.KOTLIN_BUILD_DIR_NAME
4036
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
4137
import org.jetbrains.kotlin.incremental.ChangedFiles
4238
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
@@ -122,6 +118,7 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
122118
val generatedJavaSources = javaCompile.project.fileTree(javaOutputDir)
123119
generatedJavaSources.include("**/*.java")
124120
javaCompile.source(generatedJavaSources)
121+
javaCompile.source(resourceOutputDir)
125122
javaCompile.classpath += project.files(classOutputDir)
126123
}
127124

@@ -145,10 +142,18 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
145142

146143
kotlinCompileProvider.configure { kotlinCompile ->
147144
kotlinCompile.dependsOn(kspTaskProvider)
148-
kotlinCompile.source(kotlinOutputDir, javaOutputDir)
145+
kotlinCompile.source(kotlinOutputDir, javaOutputDir, resourceOutputDir)
149146
kotlinCompile.classpath += project.files(classOutputDir)
150147
}
151148

149+
// KotlinCompilationOutput assumes only one resource provider.
150+
// Therefore, it's best not to override it in case of conflicting with other plugins.
151+
// FIXME: Need KotlinCompilationOutput.dir() in upstream.
152+
when (val outputs = kotlinCompilation.output.allOutputs) {
153+
is ConfigurableFileCollection -> outputs.from(resourceOutputDir)
154+
is SourceSetOutput -> outputs.dir(resourceOutputDir)
155+
}
156+
152157
return project.provider { emptyList() }
153158
}
154159

0 commit comments

Comments
 (0)