Gradle 如何仅在任务不是最新的情况下执行任务依赖关系?
我有两个gradle任务,看起来有点像这样:Gradle 如何仅在任务不是最新的情况下执行任务依赖关系?,gradle,build.gradle,Gradle,Build.gradle,我有两个gradle任务,看起来有点像这样: task taskA(){ inputs.file('config') outputs.file('a-out') } task taskB(dependsOn: taskA){ /* * Strictly speaking, 'a-out' is also a input of taskB, but * if there is already output for taskB and 'config' has not c
task taskA(){
inputs.file('config')
outputs.file('a-out')
}
task taskB(dependsOn: taskA){
/*
* Strictly speaking, 'a-out' is also a input of taskB, but
* if there is already output for taskB and 'config' has not changed,
* there is no need to regenerate 'a-out'.
*/
inputs.file('config')
outputs.file('b-out')
}
taskB
是我感兴趣的实际任务,而taskA
只是作为taskB
的中间数据的生产者。当没有以前的输出时,在taskB
之前执行taskA
是至关重要的
如果
taskB
是最新的(或从构建缓存加载),我希望能够完全跳过taskA
,因为在这种情况下,中间数据生成只是浪费时间。上面的设置将输出两个任务的最新信息,但这不是我想要的,因为在使用build cache时,解压缩taskA
缓存会花费一些时间,这又是浪费。我最终通过创建一个按顺序调用taskA
和taskB
的外部脚本来解决这个问题,然后创建一个与taskB
具有相同输入的taskC
,并调用脚本
这实际上是将两个任务合并为一个任务,当最终输出是最新的时,将跳过这两个任务。这是可行的,但我希望有一个更干净的方法来处理gradle