重置gradle任务的UP-TO-DATE属性?
有没有一种方法可以强制重新运行gradle任务,或者将所有任务重置为非UP-TO-DATE状态?
尝试使用重buildGradle的caching的-C rebuild
来运行你的构build。
在较新版本的Gradle中,使用--rerun-tasks
如果您只需要一个任务就可以运行,您可以在任务中设置outputs
属性。
outputs.upToDateWhen { false }
请注意,如果您的任务没有任何定义的文件input,即使使用上述代码,Gradle也可能会跳过该任务。 例如,在Zip或Copy任务中,需要在任务定义的configuration阶段提供至less一个文件。
你可以使用cleanTaskname
假设你有
:someproject:sometask1 UP-TO-DATE :someproject:sometask2 UP-TO-DATE :someproject:sometask3 UP-TO-DATE
而你想强迫我们说sometask2再次运行你可以
someproject:cleanSometask2
在运行完所有的任务之前。
显然在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 } } } }