Gradle 6.6 RC6 釋出了。Gradle 是一個基於 Apache Ant 和 Apache Maven 概念的專案自動化構建工具,支援依賴管理和多專案,類似 Maven,但比之簡單輕便。它使用一種基於 Groovy 的特定領域語言來宣告專案設定,而不是傳統的 XML。
此版本最大亮點是引入了一個實驗性選項:配置快取(Configuration caching),它是一個主要的效能最佳化特性,可以使 Gradle 跳過構建的配置階段,並儘快開始執行任務。
配置快取
在執行任何任務之前,Gradle 需要執行配置階段。當前,這是在每次構建呼叫時完成的,並且會產生大量的開銷,尤其是在大型專案中。
配置快取透過快取配置階段的結果並將其重新用於後續構建,從而可以顯著提高構建效能。使用配置快取,Gradle 可以在不影響構建配置的任何內容發生變化的情況下完全跳過配置階段,如下所示:
此外,啟用配置快取後,Gradle 能夠最佳化任務執行,並預設情況下並行執行更多工。
目前該特性處於高度試驗階段,預設情況下不啟用或建議用於生產環境。可以透過--configuration-cache
在命令列上提供引數或將其新增到執行配置中來啟用此實驗特性。
標準化的執行時類路徑改善快取命中率
對於最新檢查和構建快取,Gradle 需要確定兩個任務輸入屬性是否具有相同的值。為此,Gradle 首先將兩個輸入標準化,然後比較結果。
現在,執行時類路徑分析將檢查清單META-INF
檔案和屬性檔案,而忽略對註釋、空格和順序差異的更改。此外還可以有選擇地忽略不影響執行時類路徑的屬性。
normalization {
runtimeClasspath {
metaInf {
ignoreAttribute("Implementation-Version")
ignoreProperty("timestamp")
}
}
}
類路徑上的任何 ZIP 檔案被重新生成並且僅因不重要的值或註釋而不同的情況下,將提高生成快取記憶體命中的可能性。這種規範化最有用的最常見情況是 JAR 檔案,不過它也可以被應用於類路徑上的任何 ZIP 檔案,例如 AAR、WAR 和 APK 檔案。
處理使用者提供的憑證
構建有時會要求使用者提供憑據,例如,為了釋出工件,可能需要憑證才能與工件儲存庫進行身份驗證。將憑據保留在構建指令碼之外是一個好習慣。
此版本提供了用於憑證的新 API,該憑證透過建立約定以使用 Gradle 屬性提供憑證來簡化憑證的使用,Gradle 屬性可以作為命令列引數、環境變數或gradle.properties
檔案中的值提供給構建環境。當 Gradle 知道某個時候該版本將需要憑證並且憑證已丟失時,它還會執行“快速失效”。
從此版本開始,可以輕鬆地將用於身份驗證的憑證外部化到工件儲存庫:
repositories {
maven {
name = 'mySecureRepository'
credentials(PasswordCredentials)
// url = uri(<<some repository url>>)
}
}
mySecureRepository
將在 Gradle 屬性中搜索名稱為mySecureRepositoryUsername
和mySecureRepositoryPassword
的憑據。
同時還可以直接使用新的 provider API 向外部工具提供憑據:
tasks.register('login', Exec) {
def loginProvider =
providers.credentials(PasswordCredentials, 'login')
inputs.property('credentials', loginProvider)
doFirst {
PasswordCredentials loginCredentials = loginProvider.get()
// use credentials
}
}
上面的憑據將在 Gradle 屬性中使用名稱loginUsername
和loginPassword
進行搜尋。
此外,此版本還有其它改進,包括對 Java 編譯 --release 標誌的支援、檔案系統監視的穩定性改進、依賴管理的改進,以及 bug 修復等,詳情檢視更新說明:https://docs.gradle.org/6.6-rc-6/release-notes.html
[admin
]