有没有办法可以强制gradle任务再次运行,或者将所有任务重置回非UP-TO-DATE状态?
答案 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重建。