我遇到了一种情况,当Gradle的所有内容都处于最新状态时,尽管我仍然喜欢为我运行任务。显然它没有:
gradle test
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
BUILD SUCCESSFUL
Total time: 0.833 secs
我可以通过运行 clean test 强制它运行测试,尽管在某些情况下这可能会被视为开销。有没有办法强制执行任务,无论Gradle是否相信它的最新状态?
答案 0 :(得分:26)
如果您想重新运行所有任务,可以使用command line parameter --rerun-tasks
。然而,这与重新运行所有任务时的干净基本相同。
如果您想每次都运行一个任务,那么您可以指定它永远不会是最新的:
mytask {
outputs.upToDateWhen { false }
}
如果你想重新运行一个任务并离开所有其他任务,你必须实现一些逻辑:
mytask {
outputs.upToDateWhen {
if (project.hasProperty('rerun')) {
println "rerun!"
return false
} else {
return true
}
}
}
然后您可以使用以下命令强制重新运行任务:
gradle mytask -Prerun
请注意,这也将重新运行依赖于mytask
。