重置gradle任务的UP-TO-DATE属性?

时间:2011-09-02 22:39:38

标签: groovy gradle

有没有办法可以强制gradle任务再次运行,或者将所有任务重置回非UP-TO-DATE状态?

5 个答案:

答案 0 :(得分:114)

尝试使用重建Gradle缓存的-C rebuild运行构建。

在较新版本的Gradle中,请使用--rerun-tasks

答案 1 :(得分:80)

如果您只希望一个任务始终运行,则可以在任务内部设置outputs属性。

outputs.upToDateWhen { false }

请注意,如果您的任务没有任何已定义的文件输入,Gradle可能会跳过该任务,即使使用上述代码也是如此。例如,在Zip或Copy任务中,任务定义的配置阶段中至少需要提供一个文件。

答案 2 :(得分:25)

您可以使用cleanTaskname

假设你有

:someproject:sometask1 UP-TO-DATE
:someproject:sometask2 UP-TO-DATE
:someproject:sometask3 UP-TO-DATE

你想强制让我们说sometask2再次运行你可以

someproject:cleanSometask2

在运行运行它的任务之前。

显然在gradle中,每个理解UP-TO-DATE的任务也都能理解如何清理自己。

答案 3 :(得分:2)

我遇到了一个棘手的情况,即在任务中设置outputs.upToDateWhen { false }或添加标记--rerun-tasks没有帮助,因为任务的setOnlyIf一直设置为{每次我跑步时都会{1}}。

将以下内容添加到false会强制执行build.gradle

myTask

答案 4 :(得分:0)

你可以运行:

./gradlew cleanBuildCache
./gradlew clean

它会强制gradle重建。