gradle插件實(shí)現(xiàn)增量編譯

什么是增量編譯

寫gradle 腳本的時(shí)候游盲,如果task執(zhí)行的邏輯特別耗時(shí),變會影響整個(gè)打包速度,但有的時(shí)候我們沒有必要去執(zhí)行task的邏輯塔次,例如在一個(gè)Android項(xiàng)目中,只有當(dāng)我們的java代碼變更了名秀,我們變會對java代碼進(jìn)行編譯生成.class文件俺叭,我們沒有更改java代碼,那么我們就沒必要執(zhí)行javac的操作泰偿,而去直接復(fù)用上次編譯java代碼生成的class文件熄守,這樣就可以加快我們的編譯速度,增量地編譯java代碼的task就是一個(gè)增量編譯的task耗跛。

什么樣的task是增量編譯task呢裕照?首先要有輸入文件、輸出文件调塌,

  • 當(dāng)我們輸入文件沒有變化晋南,什么都不干
  • 當(dāng)輸入文件被添加、修改羔砾、之后负间,執(zhí)行task邏輯

怎么讓一個(gè)task實(shí)現(xiàn)增量編譯呢偶妖?

1、寫一個(gè)task繼承DefaultTask
2政溃、定義輸入趾访、輸出文件

定義輸入文件的注解:@Input、@InputDirectory董虱、@InputFile扼鞋、@InputFiles
定義輸出文件的注解:@OutputDirectories、 @OutputDirectory愤诱、@OutputFile云头、@OutputFiles
例如:

  @InputFiles
  List<File> inputFiles

  @OutputFile
  File outputDir
3、用@TaskAction修飾Task執(zhí)行的邏輯

一個(gè)File的添加淫半、刪除溃槐、修改的變化可以通過InputFileDetails類進(jìn)行判斷,如果有多個(gè)inputFile科吭,那么可以通過遍歷IncrementalTaskInputs拿到InputFileDetails來判斷昏滴。

下面是一個(gè)拿到路由文件,然后生辰一個(gè)路由文檔的例子砌溺,挨個(gè)遍歷所有路由文件影涉,當(dāng)發(fā)現(xiàn)有路由文件添加和修改之后,變會重新生成一個(gè)路由文檔规伐。

 /**
   * Task action that will check if a source file is out of date
   * or removed. If out of date the source file is converted
   * to HTML. If source file is removed the generated
   * HTML file is removed.
   *
   * @param inputs Used for incremental task action.
   */
  @TaskAction
  void generateRouterDoc(IncrementalTaskInputs inputs){

    if (!inputs.incremental) {
      println("incremental is execute")
    }

    boolean isNeedGenerate = false
    // Input file has changed
    inputs.outOfDate { InputFileDetails outOfDate ->
      if(outOfDate.added || outOfDate.modified){
        //如果輸入文件有改變蟹倾,那么我們才生成文檔,其它不做任何處理
        println(">>>輸入文件發(fā)生了改變,需要生成路由文檔")
        isNeedGenerate = true
      }
      println("${outOfDate.file.absolutePath} is outOfDate")
    }

    if (!outputDir.exists()) {
      isNeedGenerate = true
    }

    if(isNeedGenerate){
      generateRouterDocument(inputFiles)
    }

    // Input file is removed, so we remove the
    // output file that was created for the input file.
    inputs.removed { InputFileDetails removed ->
      println("${removed.file.name} is removed ")
    }

  }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末猖闪,一起剝皮案震驚了整個(gè)濱河市鲜棠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌培慌,老刑警劉巖豁陆,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吵护,居然都是意外死亡盒音,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門馅而,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祥诽,“玉大人,你說我怎么就攤上這事瓮恭⌒燮海” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵屯蹦,是天一觀的道長维哈。 經(jīng)常有香客問我绳姨,道長,這世上最難降的妖魔是什么阔挠? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任飘庄,我火速辦了婚禮,結(jié)果婚禮上谒亦,老公的妹妹穿的比我還像新娘竭宰。我一直安慰自己空郊,他們只是感情好份招,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著狞甚,像睡著了一般锁摔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上哼审,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天谐腰,我揣著相機(jī)與錄音,去河邊找鬼涩盾。 笑死十气,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的春霍。 我是一名探鬼主播砸西,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼址儒!你這毒婦竟也來了芹枷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤莲趣,失蹤者是張志新(化名)和其女友劉穎鸳慈,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喧伞,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡走芋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了潘鲫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翁逞。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖次舌,靈堂內(nèi)的尸體忽然破棺而出熄攘,到底是詐尸還是另有隱情,我是刑警寧澤彼念,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布挪圾,位于F島的核電站趾浅,受9級特大地震影響更扁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一御板、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧单寂,春花似錦系吩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胧后,卻和暖如春芋浮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背壳快。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工纸巷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人眶痰。 一個(gè)月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓瘤旨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親竖伯。 傳聞我的和親對象是個(gè)殘疾皇子存哲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344