重置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 } } } }