【发布时间】:2019-01-17 04:32:53
【问题描述】:
我觉得这个答案很简单,但是我找不到。
我正在尝试使用 Kotlin 创建 Gradle 扩展。我要做的第一个任务是有效地调用project.copy 任务,这样我就可以将源文件移动到构建目录并执行令牌替换(我知道,我还没有实现)。
这会编译,并且插件被 Gradle 识别。有(至少)2个问题。编译器抱怨 from 和 into 或未使用。我的第一个线索是我做错了什么。第二个是当我运行任务时 Gradle 告诉我这个错误:
* What went wrong:
Execution failed for task ':gsqlCopySources'.
> Cannot convert path to File. path='null'
代码:
import org.gradle.api.DefaultTask
import com.optum.giraffle.GsqlExtension
import org.gradle.api.tasks.*
import java.io.File
open class CopySources: DefaultTask() {
private val extension = project.extensions.run {
findByName("gsql") as GsqlExtension
}
@OutputDirectory
val outputDirectory: File = project.file("${project.buildDir}/${extension.scriptPath}")
@InputDirectory
val inputDirectory: File = project.file("${project.rootDir}/${extension.scriptPath}")
init {
group = "build"
description = "Copy gsql scripts to build directory performing token replacement"
}
@TaskAction
fun copyFiles() {
inputDirectory.apply {
parentFile.mkdirs()
}
project.copy{
val from = inputDirectory
val into = outputDirectory
}
}
}
【问题讨论】: