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