在我的build.gradle脚本中,我有很多任务,每个任务都取决于零个或多个其他任务。
可以调用三个“主要”任务:moduleInstallation
,backupFiles
和restoreFiles
。
这是一个问题:我希望能够告诉Gradle要执行哪些任务以及哪些不需要执行。例如,在调用moduleInstallation
时,我希望执行所有依赖任务(无论其UP-TO-DATE flag
),还是不还原任务。我已经尝试改变执行任务的阶段(例如配置阶段,执行阶段......)以及其他一些事情,但所有任务都会继续执行。
我想到的解决方案只是在主要任务中说明,当调用此主要任务(fe moduleInstallation
)时,我们将所有非相关任务的UP-TO-DATE flag
设置为false ,所以他们不会被处决。这可能吗?
编辑:以下是一个例子:
调用moduleInstallation
时(取决于backupFiles
),restoreFiles
(取决于restoreFromDate
)也会被执行。
第一个主要行动
task moduleInstallation << {
println "Hello from moduleInstallation"
}
task backupFiles {
doLast {
println "Hello from backupFiles"
}
}
第二个主要行动
task restoreFiles {
println "Hello from restoreFiles"
}
task restoreFromDate {
println "Hello from restoreFromDate"
}
依赖关系:
moduleInstallation.dependsOn backupFiles
restoreFiles.dependsOn restoreFromDate
因此,当我在终端中输入gradle moduleInstallation
时,我得到以下输出:
Hello from restoreFromDate
Hello from restoreFiles
Hello from backupFiles
Hello from moduleInstallation
答案 0 :(得分:3)
第二个代码段必须像第一个代码段一样使用doLast
(或其<<
快捷方式)。否则,代码是配置代码,无论最终将执行哪些任务,都将始终进行评估。换句话说,这不是在这里执行的restoreFiles
和restoreFromDate
任务(可以从命令行输出中看出你没有显示的那些),但是(仅)它们的配置代码。
为了更好地了解这里发生的事情(这对理解Gradle至关重要),我建议您研究Build Lifecycle中的Gradle User Guide章节。