22.12.增量Java編譯
從Gradle2.1開始,可以使用Java增量編譯,此功能正在孵化,參見JavaCompile如何啟用這個功能. 增量編譯的主要目標如下:
- 避免在沒必要編譯的java編譯資源上浪費時間.這意味著更快構建,尤其是在改變一些class與jar的時候,不需要再次編譯那些不依賴這些class與jar的文件.
- 盡可能地少輸出class.類不需要重新編譯意味著保持輸出目錄不變。一個示例場景中,真正使用JRebel的真正有用的是 - 越少的輸出類被改變,JVM可以使用越快刷新。
更高級的增量編譯:
- 檢測陳舊類的設置是否正確是以犧牲速度為代價的,該算法分析字節(jié)碼并與編譯器直接交互(非私有常量內(nèi)聯(lián)),依賴傳遞等.舉個例子:當一個類的公共常量改變后,我們希望避免由編譯器編譯內(nèi)聯(lián)常數(shù)產(chǎn)生的問題,我們將調(diào)整算法和緩存以便增量Java編譯可以是每編譯任務的默認設置。
- 為了使增量編譯快,我們緩存會分析class的結果和jar快照。最初的增量編譯應該會慢于cold caches.