21

我最近开始在一个项目中使用 gradle 并且我正在运行标准

gradle clean init build

我注意到在许多正在运行的任务中,我在控制台中收到了这条 UP-TO-DATE 消息,在当前正在运行的任务旁边。例如:-

:foo:bar:test UP-TO-DATE

我很好奇这条消息是什么意思。找不到相同的任何文档。

4

4 回答 4

22

Gradle 所做的一切都是一项任务。大多数任务都声明了输入和输出。Gradle 将通过检查输入和输出来确定任务是否是最新的。

例如,您的compile任务输入是源代码。如果自上次编译后源代码没有更改,那么它将检查输出以确保您没有破坏编译器生成的类文件。如果输入和输出未更改,则认为任务“最新”并且不执行该任务。这可以节省大量时间,尤其是在大型构建中。

于 2013-02-28T23:11:50.547 回答
11

顺便说一句:如果你真的想绕过这个构建优化,你可以使用--rerun-tasks命令行选项来强制执行每个任务。请参阅gradle 命令行选项的文档

于 2013-03-01T11:51:35.243 回答
5

Gradle 是一个增量构建系统。这意味着它会在实际执行之前检查任务是否必须真正执行,以便更快。

因此,例如,如果您已经在之前的构建中编译了源文件,并且没有修改任何源文件(也没有修改 compile 任务的任何其他输入),那么 Gradle 不会重新编译所有源文件,因为它知道它将导致与构建文件夹中已经存在的输出完全相同的输出。并且因此安全地跳过了编译,从而加快了构建速度。

文档中的更多信息

于 2013-02-28T13:58:56.270 回答
-1

我遇到了类似的问题,尝试了所有选项,但以下选项对我有用:

 gradle  -Dorg.gradle.daemon=false <your tasks>
于 2016-09-25T01:32:23.080 回答