在Gradle(6.2)中,我们是否可以将自定义任务的构造函数参数注释为;输入“;?
假设我有一个自定义gradle任务:在Gradle(6.2)中,我们是否可以将自定义任务的构造函数参数注释为;输入“;?,gradle,gradle-kotlin-dsl,Gradle,Gradle Kotlin Dsl,假设我有一个自定义gradle任务: open class CustomTask @Inject constructor( private val inputFile: File, private val outputFile: File ) : DefaultTask() (基于) 到目前为止,在gradle中,定义输入或输出的常用方法是使用如下注释 从Kotlin的角度来看,将所有这些输入/输出值注入构造函数会很好,但我想知道, 可能吗?比如: open clas
open class CustomTask @Inject constructor(
private val inputFile: File,
private val outputFile: File
) : DefaultTask()
(基于)
到目前为止,在gradle中,定义输入或输出的常用方法是使用如下注释
从Kotlin的角度来看,将所有这些输入/输出值注入构造函数会很好,但我想知道,
可能吗?比如:
open class CustomTask @Inject constructor(
private @InputFile val inputFile: File,
private @OutputFile val outputFile: File
):DefaultTask()两个注释的javadocs状态(emphasis mine): 此注释应附加到Java中的getter方法,或Groovy中的属性忽略setter上的注释或Java中的字段。 此注释应附加到Java中的getter方法,或Groovy中的属性。setter上的注释或Java中的字段被忽略 回答你的问题:不
Kotlin、Java或Groovy中的构造函数参数既不是getter,也不是属性,因此它们被忽略。实际上,它的工作原理与我上面所说的一样 根据文档,我没想到会这样,这就是我最初问这个问题的原因 但以下任务在Kotlin(在/buildSrc下)中定义如下:
你试过这个吗?根据文件,这似乎是行不通的。但同时我也试过了,它似乎真的起作用了!
open class TaskA @Inject constructor(
@org.gradle.api.tasks.InputFile var inputFile : File,
@org.gradle.api.tasks.OutputFile var outputFile : File
) : DefaultTask() {
@TaskAction
fun doIt() {
val contents = inputFile.readText()
val result = contents.replace("a", "b")
outputFile.parentFile.mkdirs()
outputFile.writeText(result)
}
}