<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          重磅!!Gradle 6.6 發(fā)布,大幅提升性能!

          共 2535字,需瀏覽 6分鐘

           ·

          2020-08-21 23:41

          Java技術(shù)棧

          www.javastack.cn

          關(guān)注閱讀更多優(yōu)質(zhì)文章



          推薦閱讀:Spring Boot 把 Maven 干掉了,正式擁抱 Gradle!

          Gradle 6.6 發(fā)布了!!!

          Gradle 是一個(gè)基于 Apache Ant 和 Apache Maven 概念的項(xiàng)目自動(dòng)化構(gòu)建工具,支持依賴管理和多項(xiàng)目,類似 Maven,但比之簡(jiǎn)單輕便。它使用一種基于 Groovy 的特定領(lǐng)域語(yǔ)言來(lái)聲明項(xiàng)目設(shè)置,而不是傳統(tǒng)的 XML。

          此版本最大亮點(diǎn)是引入了一個(gè)實(shí)驗(yàn)性選項(xiàng):配置緩存(Configuration caching),它是一個(gè)主要的性能優(yōu)化特性,可以使 Gradle 跳過(guò)構(gòu)建的配置階段,并盡快開(kāi)始執(zhí)行任務(wù)。

          配置緩存

          在運(yùn)行任何任務(wù)之前,Gradle 需要運(yùn)行配置階段。當(dāng)前,這是在每次構(gòu)建調(diào)用時(shí)完成的,并且會(huì)產(chǎn)生大量的開(kāi)銷,尤其是在大型項(xiàng)目中。

          配置緩存通過(guò)緩存配置階段的結(jié)果并將其重新用于后續(xù)構(gòu)建,從而可以顯著提高構(gòu)建性能。使用配置緩存,Gradle 可以在不影響構(gòu)建配置的任何內(nèi)容發(fā)生變化的情況下完全跳過(guò)配置階段,如下所示:

          此外,啟用配置緩存后,Gradle 能夠優(yōu)化任務(wù)執(zhí)行,并默認(rèn)情況下并行執(zhí)行更多任務(wù)。如果你想深入學(xué)習(xí) Gradle,關(guān)注微信公眾號(hào)Java技術(shù)棧在后臺(tái)回復(fù)Gradle可以獲取一份完整教程

          目前該特性處于高度試驗(yàn)階段,默認(rèn)情況下不啟用或建議用于生產(chǎn)環(huán)境。可以通過(guò)--configuration-cache在命令行上提供參數(shù)或?qū)⑵涮砑拥竭\(yùn)行配置中來(lái)啟用此實(shí)驗(yàn)特性。

          標(biāo)準(zhǔn)化的運(yùn)行時(shí)類路徑改善緩存命中率

          對(duì)于最新檢查和構(gòu)建緩存,Gradle 需要確定兩個(gè)任務(wù)輸入屬性是否具有相同的值。為此,Gradle 首先將兩個(gè)輸入標(biāo)準(zhǔn)化,然后比較結(jié)果。

          現(xiàn)在,運(yùn)行時(shí)類路徑分析將檢查清單META-INF文件和屬性文件,而忽略對(duì)注釋、空格和順序差異的更改。此外還可以有選擇地忽略不影響運(yùn)行時(shí)類路徑的屬性。

          normalization?{
          ????runtimeClasspath?{
          ????????metaInf?{
          ????????????ignoreAttribute("Implementation-Version")
          ????????????ignoreProperty("timestamp")
          ????????}
          ????}
          }

          類路徑上的任何 ZIP 文件被重新生成并且僅因不重要的值或注釋而不同的情況下,將提高生成高速緩存命中的可能性。

          這種規(guī)范化最有用的最常見(jiàn)情況是 JAR 文件,不過(guò)它也可以被應(yīng)用于類路徑上的任何 ZIP 文件,例如 AAR、WAR 和 APK 文件。

          處理用戶提供的憑證

          構(gòu)建有時(shí)會(huì)要求用戶提供憑據(jù),例如,為了發(fā)布工件,可能需要憑證才能與工件存儲(chǔ)庫(kù)進(jìn)行身份驗(yàn)證。將憑據(jù)保留在構(gòu)建腳本之外是一個(gè)好習(xí)慣。

          此版本提供了用于憑證的新 API,該憑證通過(guò)建立約定以使用 Gradle 屬性提供憑證來(lái)簡(jiǎn)化憑證的使用,Gradle 屬性可以作為命令行參數(shù)、環(huán)境變量或gradle.properties文件中的值提供給構(gòu)建環(huán)境。當(dāng) Gradle 知道某個(gè)時(shí)候該版本將需要憑證并且憑證已丟失時(shí),它還會(huì)執(zhí)行“快速失效”。

          從此版本開(kāi)始,可以輕松地將用于身份驗(yàn)證的憑證外部化到工件存儲(chǔ)庫(kù):

          repositories?{
          ????maven?{
          ????????name?=?'mySecureRepository'
          ????????credentials(PasswordCredentials)
          ????????//?url?=?uri(<>)
          ????}
          }

          mySecureRepository將在 Gradle 屬性中搜索名稱為mySecureRepositoryUsernamemySecureRepositoryPassword的憑據(jù)。

          同時(shí)還可以直接使用新的 provider API 向外部工具提供憑據(jù):

          tasks.register('login',?Exec)?{
          ????def?loginProvider?=?
          ????????providers.credentials(PasswordCredentials,?'login')
          ????inputs.property('credentials',?loginProvider)
          ????doFirst?{
          ???????PasswordCredentials?loginCredentials?=?loginProvider.get()
          ???????//?use?credentials
          ????}
          }

          上面的憑據(jù)將在 Gradle 屬性中使用名稱loginUsernameloginPassword進(jìn)行搜索。

          此外,此版本還有其它改進(jìn),包括對(duì) Java 編譯 --release 標(biāo)志的支持、文件系統(tǒng)監(jiān)視的穩(wěn)定性改進(jìn)、依賴管理的改進(jìn),以及 bug 修復(fù)等,詳情查看更新說(shuō)明:https://docs.gradle.org/6.6/release-notes.html

          文章轉(zhuǎn)載自 OSCHINA 社區(qū)

          地址:oschina.net/news/117987/gradle-6-6-released

          最近熱文:
          1、重磅!《Java開(kāi)發(fā)手冊(cè)(嵩山版)》最新發(fā)布
          2、打破你的認(rèn)知!Java空指針居然還能這樣玩
          3、盤(pán)點(diǎn) 35 個(gè) Apache 頂級(jí)項(xiàng)目,我拜服了…
          4、Spring Boot 太狠了,一次發(fā)布 3 個(gè)版本!
          5、Spring Boot 如何快速集成 Redis?
          6、盤(pán)點(diǎn) 6 個(gè)被淘汰的 Java 技術(shù),曾經(jīng)風(fēng)光過(guò)!
          7、Spring Boot Redis 實(shí)現(xiàn)分布式鎖,真香!
          8、國(guó)人開(kāi)源了一款小而全的 Java 工具類庫(kù)
          9、公司來(lái)了個(gè)新同事不會(huì)用 Lombok!
          10、同事寫(xiě)了個(gè)隱藏 bug,我排查了 3 天!
          掃碼關(guān)注Java技術(shù)棧公眾號(hào)閱讀更多干貨。

          點(diǎn)擊「閱讀原文」獲取面試題大全~

          瀏覽 34
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩少妇网 | 婷av| 久热这里有精品 | 男女成人 免费视频在线播放 | 精品免费一区二区三区四区 |