8.5 task 依赖详解中 dependsOn不起作用
来源:8-5 Task依赖详解及实战

杨宇
2018-06-18
代码如下:
task testDependsOn { dependsOn this.tasks.findAll { task -> return task.name.startsWith('lib') } } task lib1 { doLast { println 'lib1' } }
不能正确的按照视频中的产生依赖,如果把两个task 的顺序进行调整则可以正确输出,使用的gradle 版本是 4.5.1
3回答
-
确实只能后面的task依赖前面的,但是如果是通过方法参数添加的就没有这个问题。
40 -
慕侠74744
2018-10-31
这是因为同一个文件=中前面的task优先配置,这时候还没有把lib1添加到TaskContainer中,可以通过添加监听配置的,代码如下
task testDependsOn {
rootProject.afterEvaluate {
dependsOn this.tasks.findAll { task ->
return task.name.startsWith('lib')
}
}
doLast{
println "testDependsOn"
}
}
task lib1 {
doLast {
println 'lib1'
}
}运行结果:
> Task :lib1
lib1
> Task :testDependsOn
testDependsOn
或者向楼上说的,将被依赖的task写在前面,这样读取配置的时候可以优先添加到TaskContainer
希望能帮到你
30 -
周康武
2018-11-21
楼主完美解决我的疑问,但是后还是有点问题,看下面代码, 不知是否是因为 "<<" 这符号不支持了
```
The Task.leftShift(Closure) method has been deprecated and is scheduled to be
removed in Gradle 5.0. Please use Task.doLast(Action) instead.
at build_ehyhb7i9adkxf30qlrr9x4gwk.run(E:\CongBao\app\build.gradle:18
4)
(Run with --stacktrace to get the full stack trace of this deprecatio
n warning.)
```
00
相似问题