cmc*_*nty 85
如果只想让一个任务始终运行,则可以outputs在任务内部设置属性.
outputs.upToDateWhen { false }
Run Code Online (Sandbox Code Playgroud)
请注意,如果您的任务没有任何已定义的文件输入,Gradle可能会跳过该任务,即使使用上述代码也是如此.例如,在Zip或Copy任务中,需要在任务定义的配置阶段提供至少一个文件.
c_m*_*ker 25
您可以使用 cleanTaskname
让我们说你有
:someproject:sometask1 UP-TO-DATE
:someproject:sometask2 UP-TO-DATE
:someproject:sometask3 UP-TO-DATE
Run Code Online (Sandbox Code Playgroud)
而你想强制让我们说sometask2再次运行你可以
someproject:cleanSometask2
Run Code Online (Sandbox Code Playgroud)
在运行运行它的任务之前.
显然,在Gradle中,理解UP-TO-DATE的每项任务也都能理解如何清理自己.
我遇到了一个棘手的情况,outputs.upToDateWhen { false }在任务内部设置或添加标志--rerun-tasks无济于事,因为每次运行任务时都会setOnlyIf一直设置为false。
添加以下内容以build.gradle强制执行myTask:
gradle.taskGraph.whenReady { taskGraph ->
def tasks = taskGraph.getAllTasks()
tasks.each {
def taskName = it.getName()
if(taskName == 'myTask') {
println("Found $taskName")
it.setOnlyIf { true }
it.outputs.upToDateWhen { false }
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55550 次 |
| 最近记录: |