我遇到了一种情况,当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
Run Code Online (Sandbox Code Playgroud)
我可以强制它运行测试运行干净的测试,尽管这可能被认为在某些情况下的开销.有没有办法强制执行任务,无论Gradle是否认为它是最新的?
Mar*_*rga 32
如果要重新运行所有任务,可以使用命令行参数 --rerun-tasks.然而,这与重新运行所有任务时执行干净基本相同.
如果您希望每次都运行一个任务,那么您可以指定它永远不会是最新的:
mytask {
outputs.upToDateWhen { false }
}
Run Code Online (Sandbox Code Playgroud)
如果要重新运行一个任务并保留所有其他任务,则必须实现一些逻辑:
mytask {
outputs.upToDateWhen {
if (project.hasProperty('rerun')) {
println "rerun!"
return false
} else {
return true
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后您可以使用以下命令强制重新运行任务:
gradle mytask -Prerun
请注意,这也将重新运行所有依赖的任务mytask.
Bra*_*rek 20
在 Gradle v7.6 中,新--rerun标志可以告诉单个任务忽略最新检查:
./gradlew theTask --rerun
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16169 次 |
| 最近记录: |