Fix JS DCE classpath duplicated in two input properties

* Do not add the classpath elements to source to avoid them being
  treated as task inputs without proper classpath normalization
* Move resolution of the classpath configuration to execution time
This commit is contained in:
Sergey Igushkin
2017-12-12 20:58:52 +03:00
parent 67b5527c68
commit 6bea643176
2 changed files with 7 additions and 6 deletions
@@ -52,13 +52,12 @@ class KotlinJsDcePlugin : Plugin<Project> {
val outputDir = File(File(project.buildDir, DEFAULT_OUT_DIR), sourceSet.name) val outputDir = File(File(project.buildDir, DEFAULT_OUT_DIR), sourceSet.name)
val configuration = project.configurations.findByName(sourceSet.compileConfigurationName)!! val configuration = project.configurations.findByName(sourceSet.compileConfigurationName)!!
val dceInputTrees = listOf(project.fileTree(kotlinTask.outputFile)) + configuration.map { project.fileTree(it) } val dceInputTree = project.fileTree(kotlinTask.outputFile)
val dceInputFiles = dceInputTrees.reduce { acc: FileTree, tree -> acc + tree }
with (dceTask) { with (dceTask) {
classpath = sourceSet.compileClasspath classpath = configuration
destinationDir = dceTask.dceOptions.outputDirectory?.let { File(it) } ?: outputDir destinationDir = dceTask.dceOptions.outputDirectory?.let { File(it) } ?: outputDir
source(dceInputFiles) source(dceInputTree)
} }
} }
} }
@@ -17,13 +17,13 @@
package org.jetbrains.kotlin.gradle.tasks package org.jetbrains.kotlin.gradle.tasks
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.file.FileTree
import org.gradle.api.tasks.CacheableTask import org.gradle.api.tasks.CacheableTask
import org.gradle.api.tasks.Input import org.gradle.api.tasks.Input
import org.gradle.api.tasks.Internal import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.TaskAction
import org.jetbrains.kotlin.cli.common.arguments.K2JSDceArguments import org.jetbrains.kotlin.cli.common.arguments.K2JSDceArguments
import org.jetbrains.kotlin.cli.js.dce.K2JSDce import org.jetbrains.kotlin.cli.js.dce.K2JSDce
import org.jetbrains.kotlin.compilerRunner.ArgumentUtils
import org.jetbrains.kotlin.compilerRunner.GradleKotlinLogger import org.jetbrains.kotlin.compilerRunner.GradleKotlinLogger
import org.jetbrains.kotlin.compilerRunner.createLoggingMessageCollector import org.jetbrains.kotlin.compilerRunner.createLoggingMessageCollector
import org.jetbrains.kotlin.compilerRunner.runToolInSeparateProcess import org.jetbrains.kotlin.compilerRunner.runToolInSeparateProcess
@@ -61,7 +61,9 @@ open class KotlinJsDce : AbstractKotlinCompileTool<K2JSDceArguments>(), KotlinJs
@TaskAction @TaskAction
fun performDce() { fun performDce() {
val inputFiles = getSource().files.map { it.path } val inputFiles = (listOf(getSource()) + classpath.map { project.fileTree(it) })
.reduce(FileTree::plus)
.files.map { it.path }
val outputDirArgs = arrayOf("-output-dir", destinationDir.path) val outputDirArgs = arrayOf("-output-dir", destinationDir.path)