Improve registering resources tasks in compilations: support laziness
This commit is contained in:
+9
-8
@@ -17,6 +17,7 @@ import org.gradle.api.attributes.Attribute
|
||||
import org.gradle.api.attributes.Category
|
||||
import org.gradle.api.attributes.Usage
|
||||
import org.gradle.api.attributes.Usage.USAGE_ATTRIBUTE
|
||||
import org.gradle.api.file.ConfigurableFileCollection
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.internal.artifacts.ArtifactAttributes
|
||||
import org.gradle.api.plugins.BasePlugin
|
||||
@@ -135,26 +136,26 @@ abstract class AbstractKotlinTargetConfigurator<KotlinTargetType : KotlinTarget>
|
||||
) {
|
||||
val project = compilation.target.project
|
||||
|
||||
project.locateOrRegisterTask<ProcessResources>(compilation.processResourcesTaskName) { resourcesTask ->
|
||||
val resourcesDestinationDir = project.file(compilation.output.resourcesDir)
|
||||
val resourcesTask = project.locateOrRegisterTask<ProcessResources>(compilation.processResourcesTaskName) { resourcesTask ->
|
||||
resourcesTask.description = "Processes $resourceSet."
|
||||
resourcesTask.from(resourceSet)
|
||||
resourcesTask.into(project.file(compilation.output.resourcesDir))
|
||||
resourcesTask.into(resourcesDestinationDir)
|
||||
}
|
||||
|
||||
compilation.output.resourcesDirProvider = resourcesTask.map { resourcesDestinationDir }
|
||||
}
|
||||
|
||||
protected fun createLifecycleTask(compilation: KotlinCompilation<*>) {
|
||||
val project = compilation.target.project
|
||||
|
||||
compilation.output.classesDirs.from(project.files().builtBy(compilation.compileAllTaskName))
|
||||
|
||||
project.registerTask<DefaultTask>(compilation.compileAllTaskName) {
|
||||
it.group = LifecycleBasePlugin.BUILD_GROUP
|
||||
it.description = "Assembles outputs for compilation '${compilation.name}' of target '${compilation.target.name}'"
|
||||
it.dependsOn(compilation.compileKotlinTaskName)
|
||||
if (compilation is KotlinCompilationWithResources) {
|
||||
it.dependsOn(compilation.processResourcesTaskName)
|
||||
}
|
||||
it.inputs.files(compilation.output.classesDirs)
|
||||
it.inputs.files(compilation.output.resourcesDirProvider)
|
||||
}
|
||||
(compilation.output.allOutputs as? ConfigurableFileCollection)?.from(project.files().builtBy(compilation.compileAllTaskName))
|
||||
}
|
||||
|
||||
override fun defineConfigurationsForTarget(target: KotlinTargetType) {
|
||||
|
||||
+2
-2
@@ -19,9 +19,9 @@ class DefaultKotlinCompilationOutput(
|
||||
|
||||
override val classesDirs: ConfigurableFileCollection = project.files()
|
||||
|
||||
override val allOutputs = project.files().apply {
|
||||
override val allOutputs: ConfigurableFileCollection = project.files().apply {
|
||||
from(classesDirs)
|
||||
from(Callable { resourcesDir })
|
||||
from(Callable { resourcesDirProvider })
|
||||
}
|
||||
|
||||
override val resourcesDir: File
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@ open class LifecycleTasksManager(private val project: Project) {
|
||||
open fun registerClassesTask(compilationData: KotlinCompilationData<*>) = with(project) {
|
||||
val classesTaskName = compilationData.compileAllTaskName
|
||||
val classesTask = project.tasks.register(classesTaskName) { classesTask ->
|
||||
classesTask.dependsOn(compilationData.output.allOutputs)
|
||||
classesTask.inputs.files(compilationData.output.allOutputs)
|
||||
}
|
||||
project.tasks.named(LifecycleBasePlugin.BUILD_TASK_NAME).configure { it.dependsOn(classesTask) }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user