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

        共 2535字,需瀏覽 6分鐘

         ·

        2020-08-21 23:41

        Java技術(shù)棧

        www.javastack.cn

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



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

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

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

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

        配置緩存

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

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

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

        目前該特性處于高度試驗階段,默認情況下不啟用或建議用于生產(chǎn)環(huán)境??梢酝ㄟ^--configuration-cache在命令行上提供參數(shù)或?qū)⑵涮砑拥竭\行配置中來啟用此實驗特性。

        標準化的運行時類路徑改善緩存命中率

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

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

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

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

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

        處理用戶提供的憑證

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

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

        從此版本開始,可以輕松地將用于身份驗證的憑證外部化到工件存儲庫:

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

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

        同時還可以直接使用新的 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進行搜索。

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

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

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

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

        點擊「閱讀原文」獲取面試題大全~

        瀏覽 34
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 91国语对白精品露脸 | 日韩口交 | 国模私拍一区二区三区 | 麻豆床戏| www.五月天激情 |