Gradle:如何引用另一个任务的输入?

Chr*_*iki 5 gradle

问题简述

\n\n

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

\n\n

我\xe2\x80\x99尝试过什么

\n\n

考虑以下(人为的)示例build.gradle文件(存储在/tmp/foo),其中 I\xe2\x80\x99d 喜欢在两个不同的任务中使用相同的任务输入值:

\n\n
task task1 {\n  def myInput = projectDir  // (or any other directory)\n  inputs.dir(myInput).withPropertyName(\'t1Input\')\n  doLast {\n    println myInput\n  }\n}\n\ntask task2 {\n  dependsOn task1\n  def myInput = task1.inputs.properties[\'t1Input\']\n  inputs.dir(myInput).withPropertyName(\'t2Input\')\n  doLast {\n    println myInput\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

task2我想使用与在中相同的输入task1。但是,当我运行这个构建时./gradlew --console=verbose --warning-mode=all task2我得到:

\n\n
> Task :task1 \n/tmp/foo\n> Task :task2 \nA problem was found with the configuration of task \':task2\'. Registering invalid inputs and outputs via TaskInputs and TaskOutputs methods has been deprecated and is scheduled to be removed in Gradle 5.0.\n - No value has been specified for property \'t2Input\'.\nnull\n
Run Code Online (Sandbox Code Playgroud)\n\n

似乎我的任务输入属性命名t1Inputtask1无法通过task1.inputs.propertiesJavadoc)获得。

\n\n

FWIW,我使用 Gradle 4.6。

\n