假设我有一个自定义Gradle任务:
open class CustomTask @Inject constructor(
private val inputFile: File,
private val outputFile: File
): DefaultTask()
(基于https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:passing_arguments_to_a_task_constructor)。
到目前为止,在gradle中,定义输入或输出的常用方法是使用InputFile之类的注解。
从Kotlin的Angular 来看,在构造函数中注入所有这些输入/输出值是很好的,但我想知道,这可能吗?
open class CustomTask @Inject constructor(
private @InputFile val inputFile: File,
private @OutputFile val outputFile: File
): DefaultTask()
2条答案
按热度按时间nkcskrwz1#
实际上,它的工作原理就像我上面问的那样!
我没想到会这样,根据文件,这就是为什么我最初问这个问题。
但是下面的任务,在Kotlin(在
/buildSrc
下)中定义如下:3qpi33ja2#
这两个注解的javadoc声明(强调我的):
@InputFile
此注解 * 应 * 附加到getter方法(Java中)或属性(Groovy中)。setter上的注解或Java中的字段将被忽略。
@OutputFile
这个注解 * 应该 * 附加到getter方法(Java中)或属性(Groovy中)。setter上的注解或Java中的字段会被忽略。
要回答您的问题:没有。
Kotlin、Java或Groovy中的构造函数参数既不是getter,也不是属性,因此会被忽略。