Gradle:如何引用另一个任务的输入? 简而言之

Gradle:如何引用另一个任务的输入? 简而言之,gradle,Gradle,在一个Gradle任务的配置中,如何引用另一个任务的输入 我试过的 考虑以下(人为)示例build.gradle文件(存储在/tmp/foo下),其中我希望在两个不同的任务中使用相同的任务输入值: 任务任务1{ def myInput=projectDir/(或任何其他目录) inputs.dir(myInput).withPropertyName('t1Input')) 多拉斯特{ println myInput } } 任务2{ 德彭森任务1 def myInput=task1.inputs

在一个Gradle任务的配置中,如何引用另一个任务的输入

我试过的 考虑以下(人为)示例
build.gradle
文件(存储在
/tmp/foo
下),其中我希望在两个不同的任务中使用相同的任务输入值:

任务任务1{
def myInput=projectDir/(或任何其他目录)
inputs.dir(myInput).withPropertyName('t1Input'))
多拉斯特{
println myInput
}
}
任务2{
德彭森任务1
def myInput=task1.inputs.properties['t1Input']
inputs.dir(myInput).withPropertyName('t2Input'))
多拉斯特{
println myInput
}
}
task2
中,我想使用与
task1
中相同的输入。但是,当我使用
/gradlew--console=verbose--warning mode=all task2运行此构建时,我得到:

>任务:任务1
/tmp/foo
>任务:任务2
发现任务“:task2”的配置有问题。通过TaskInputs和TaskOutputs方法注册无效输入和输出已被弃用,并计划在Gradle 5.0中删除。
-尚未为属性“t2Input”指定任何值。
无效的
task1
中名为
t1Input
的任务输入属性似乎无法通过
task1.inputs.properties
()使用


FWIW,我使用的是Gradle 4.6。

通常,人们会明确地将这种常见配置排除在外-我很好奇这种情况下的用例是什么?用例并没有那么花哨:我只是有多个任务,它们具有相同的配置文件作为输入。在上面的示例中,我可以在构建脚本的顶层声明文件,例如,
def myInput=projectDir
,然后在两个任务中使用全局变量
myInput
。但不知怎的,我觉得这样做不对,所以我寻找了其他的方法——并且惊讶地发现,似乎更“自然”的
task1.inputs.properties解决方案不起作用;-)