Мне кажется, что этот ответ прост, но я не могу его найти.
Я пытаюсь создать расширение Gradle с Kotlin. Первая задача, которую я делаю, - это эффективный вызов задачи 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
}
}
}