您可以,因为@lu.koerfer 的回答表明使用dependsOn 列表中的字符串来引用构建文件中进一步定义的任务。
换句话说,这是可行的:
task foo {}
task bar(dependsOn: [foo]) {}
这也有效:
task bar(dependsOn: ['foo']) {}
task foo {}
现在,要让任务按照您想要的顺序运行,事情并不是那么简单。 dependsOn 属性仅告诉任务在任务本身运行之前需要运行哪些任务。它确实 not 告诉 gradle 按照dependsOn 子句中定义的顺序运行任务。
一个例子:
task one {}
task two {}
task three {}
task run(dependsOn: [one, two, three]) {}
运行时产生以下输出:
~> gradle run
:one UP-TO-DATE
:three UP-TO-DATE
:two UP-TO-DATE
:run UP-TO-DATE
BUILD SUCCESSFUL
...请注意,我们没有按照one、two、three、run 的顺序运行。
换句话说,命令行调用强制任务按照定义的顺序运行,而dependsOn 是一个集合并且没有顺序。
有几种方法可以让任务按照您想要的顺序运行。一种是定义任务的依赖关系(这可能是常见的路径):
task one {}
task two(dependsOn: ['one']) {}
task three(dependsOn: ['two']) {}
task run(dependsOn: [one, two, three]) {}
导致:
~> gradle run
:one UP-TO-DATE
:two UP-TO-DATE
:three UP-TO-DATE
:run UP-TO-DATE
BUILD SUCCESSFUL
另外一种是使用gradle后面版本中添加的task ordering constructs。
此外,如果您需要将任务依赖项添加到在文件前面某处定义的任务中,您可以通过以下方式进行:
task foo {}
someTaskDefinedFurtherUp.dependsOn 'foo'
将任务foo 添加到someTaskDefinedFurtherUp 的依赖项中。