我最近开始在项目中使用gradle并运行标准
gradle clean init build
我注意到在许多正在运行的任务中,我在控制台中,在正在运行的当前任务旁边收到此UP-TO-DATE消息。例如: -
:foo:bar:test UP-TO-DATE
我很好奇这条消息是什么意思。无法找到相同的文档。
答案 0 :(得分:17)
Gradle所做的一切都是一项任务。大多数任务都声明了输入和输出。 Gradle将通过检查输入和输出来确定任务是否是最新的。
例如,您的compile
任务输入是源代码。如果源代码自上次编译后没有更改,那么它将检查输出以确保您没有吹走编译器生成的类文件。如果输入和输出未更改,则认为任务“是最新的”并且不执行该任务。这可以节省大量时间,尤其是在大型构建上。
答案 1 :(得分:7)
BTW:如果您确实想要绕过此构建优化,您可以使用--rerun-tasks
命令行选项强制执行每项任务。
见documentation of gradle command-line options
答案 2 :(得分:5)
Gradle是一个增量构建系统。这意味着它会在实际执行任务之前检查任务是否必须真正执行,以便更快。
因此,例如,如果您已经在先前版本中编译了源文件,并且没有修改任何源文件(也没有修改编译任务的任何其他输入),那么Gradle将不会重新编译所有源文件,因为它知道它将导致与build文件夹中已存在的输出完全相同的输出。因此可以安全地跳过编译,从而加快构建速度。
中的更多信息答案 3 :(得分:0)
我遇到了类似的问题尝试了所有选项,但下面的一个对我有用:
gradle -Dorg.gradle.daemon=false <your tasks>