Gradle增量编译(六)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Gradle增量编译(六)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                目錄
- 1. 概念
- 2. 如何觸發增量編譯
1. 概念
內置任務(如JavaCompile)聲明了輸入集合(Java源文件)和輸出集合(class文件)。Gradle使用此信息來確定任務是否是最新的并且是否需要執行任何工作。如果沒有任何輸入或輸出發生更改,Gradle可以跳過該任務。總之,我們將這種行為成為Gradle增量構建。
2. 如何觸發增量編譯
apply plugin: 'base'task generator() {doLast {def generatedFileDir = file("$buildDir/generated")generatedFileDir.mkdirs()for (int i=0; i<10; i++) {new File(generatedFileDir, "${i}.txt").text = i}} }task zip(type: Zip) {dependsOn generatorfrom "$buildDir/generated" }Gradle似乎每次都執行generator任務,讓我們看一下為什么generator任務每次都會執行。我們可以通過添加–info參數查看原因。
It is not up-to-date because:Task has not declared any outputs.我們從打印的信息可以看到,Gradle不知道任務產生任何輸出。默認情況下,如果一個任務沒有任何輸出,它會被認為是out-of-date。任務的輸出可以使用TaskOutputs聲明。任務的輸出可以是文件也可以是輸出。outputs使用如下所示:
task generator() {def generatedFileDir = file("$buildDir/generated")outputs.dir generatedFileDirdoLast {generatedFileDir.mkdirs()for (int i=0; i<10; i++) {new File(generatedFileDir, "${i}.txt").text = i}} }如果我們連續運行兩次修改后的任務,我們可以看到,在第二次運行后的信息是:generator任務是up-to-date(最新的)。我們在運行時添加–info參數,可以看到如下信息。
Skipping task ':generator' as it is up-to-date (took 0.001 secs).當任務的輸入和輸出都沒有改變時,Gradle會跳過這個任務。在大型項目中,可以節省很多的項目構建時間。
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的Gradle增量编译(六)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: task详解(五)
- 下一篇: gradle 的 依赖管理(八)
