我曾經在一個項目中使用gradle這個最近纔開始和我運行標準gradle中的UP-TO-DATE表示什麼?
gradle clean init build
我注意到,在許多正在運行的任務,我在控制檯中這個UP-TO-DATE消息,未來到正在運行的當前任務。例如: -
:foo:bar:test UP-TO-DATE
我很好奇這個消息是什麼意思。找不到任何相同的文檔。
我曾經在一個項目中使用gradle這個最近纔開始和我運行標準gradle中的UP-TO-DATE表示什麼?
gradle clean init build
我注意到,在許多正在運行的任務,我在控制檯中這個UP-TO-DATE消息,未來到正在運行的當前任務。例如: -
:foo:bar:test UP-TO-DATE
我很好奇這個消息是什麼意思。找不到任何相同的文檔。
Gradle是一個增量構建系統。這意味着它會檢查一個任務在實際執行之前必須真正執行,以便更快。例如,如果您已經在之前的版本中編譯過源文件,並且沒有修改任何源文件(也沒有任何其他的編譯任務輸入),那麼Gradle將不會重新編譯所有的源文件,因爲它知道它將導致與build文件夾中已存在的輸出完全相同的輸出。因此安全地跳過了編譯,導致構建更快。在搖籃確實the documentation
一切
更多信息的任務。大多數任務都有聲明的輸入和輸出。 Gradle將通過檢查輸入和輸出來確定任務是否是最新的。例如,compile
任務輸入是源代碼。如果源代碼自上次編譯後沒有更改,那麼它將檢查輸出以確保您沒有吹走編譯器生成的類文件。如果輸入和輸出保持不變,則認爲任務「最新」並且不執行該任務。這可以節省大量時間,特別是在大型版本中。
順便說一句:如果你真的想繞過這個構建優化,你可以使用--rerun-tasks
命令行選項來強制執行每個任務。 看到documentation of gradle command-line options
我不適用於zip任務 – Marx 2016-08-16 06:10:49
我遇到類似的問題嘗試了所有的選項,但下面的一個工作對我來說:
gradle -Dorg.gradle.daemon=false <your tasks>
所以,如果一個任務的工作是測試java類(如測試任務,我們從Java得到插件),假設你有一些失敗的測試,如果你運行兩次相同的任務,如果測試源沒有改變,它會不會運行? – 2013-03-01 04:20:31
此外,一旦我做了一個乾淨的,不是它強制所有的任務重新啓動? – 2013-03-01 04:43:32
@AnkitDhingra,測試任務的行爲可能與您在第一條評論中所說的相同,但這不是默認測試任務的行爲。 至於「乾淨」,運行clean會刪除build目錄,所以clean只會在任務在build目錄中有輸入或輸出時強制重啓。 – 2013-03-05 22:21:39