Gradle 構(gòu)建環(huán)境

2022-08-03 14:42 更新

通過 gradle.properties 配置構(gòu)建環(huán)境

Gradle 提供了幾個選項,可以很容易地配置將用于執(zhí)行您的構(gòu)建的 Java 進(jìn)程。當(dāng)可以通過 GRADLE_OPTS 或 JAVA_OPTS 在你的本地環(huán)境中配置這些選項時,如果某些設(shè)置如 JVM 內(nèi)存設(shè)置,Java home,守護(hù)進(jìn)程的開/關(guān),它們可以和你的項目在你的版本控制系統(tǒng)中被版本化的話,將會更有用,這樣整個團(tuán)隊就可以使用一致的環(huán)境了。在你的構(gòu)建當(dāng)中,建立一致的環(huán)境,就和把這些配置放進(jìn) gradle.properties 文件一樣簡單。這些配置將會按以下順序被應(yīng)用(以防在多個地方都有配置時只有最后一個 生效):

  • 位于項目構(gòu)建目錄的gradle.properties。
  • 位于gradle 用戶主目錄的gradle.properties。
  • 系統(tǒng)屬性,例如當(dāng)在命令行中使用 -Dsome.property 時。

下面的屬性可以用于配置 Gradle 構(gòu)建環(huán)境:

org.gradle.daemon
當(dāng)設(shè)置為 true 時,Gradle 守護(hù)進(jìn)程會運(yùn)行構(gòu)建。對于本地開發(fā)者的構(gòu)建而言,這是我們最喜歡的屬性。開發(fā)人員的環(huán)境在速度和反饋上會優(yōu)化,所以我們幾乎總是使用守護(hù)進(jìn)程運(yùn)行 Gradle 作業(yè)。由于 CI 環(huán)境在一致性和可靠性上的優(yōu)化,我們不通過守護(hù)進(jìn)程運(yùn)行 CI 構(gòu)建(即長時間運(yùn)行進(jìn)程)。

org.gradle.java.home 為 Gradle 構(gòu)建進(jìn)程指定 java home 目錄。這個值可以設(shè)置為 jdk 或 jre 的位置,不過,根據(jù)你的構(gòu)建所做的,選擇 jdk 會更安全。如果該設(shè)置未指定,將使用合理的默認(rèn)值。

org.gradle.jvmargs 指定用于該守護(hù)進(jìn)程的 jvmargs。該設(shè)置對調(diào)整內(nèi)存設(shè)置特別有用。目前的內(nèi)存上的默認(rèn)設(shè)置很大方。

org.gradle.configureondemand
啟用新的孵化模式,可以在配置項目時使得 Gradle 具有選擇性。只適用于相關(guān)的項目被配置為在大型多項目中更快地構(gòu)建。

org.gradle.parallel
如果配置了這一個,Gradle 將在孵化的并行模式下運(yùn)行。

Forked java 進(jìn)程

許多設(shè)置(如 java 版本和最大堆大?。┛梢栽趩右粋€新的 JVM 構(gòu)建進(jìn)程時指定。這意味著 Gradle 在分析了各種 gradle.properties 文件之后,必須啟動一個單獨的 JVM 進(jìn)程,以執(zhí)行構(gòu)建操作。當(dāng)通過守護(hù)進(jìn)程運(yùn)行時,帶有正確參數(shù)的 JVM 會啟動一次,并在每次的守護(hù)進(jìn)程構(gòu)建執(zhí)行時復(fù)用。當(dāng)不通過守護(hù)進(jìn)程執(zhí)行 Gradle 時,在每次構(gòu)建執(zhí)行中都必須啟動一個新的 JVM ,除非 JVM 是由 Gradle 啟動腳本啟動的,并且恰好具有相同的參數(shù)。

在執(zhí)行每個構(gòu)建時運(yùn)行一個額外的 JVM 的代價是非常昂貴的,這就是為什么我們強(qiáng)烈推薦您使用 Gradle 守護(hù)進(jìn)程,如果你指定了 org.gradle.java.home 或 org.gradle.jvmargs。更多詳細(xì)信息,請參閱Gradle 守護(hù)進(jìn)程。

通過代理訪問網(wǎng)站

配置 HTTP 代理服務(wù)器 (例如用于下載依賴) 是通過標(biāo)準(zhǔn)的 JVM 系統(tǒng)屬性來做的。這些屬性可以直接在構(gòu)建腳本中設(shè)置;例如設(shè)置代理主機(jī)為 System.setProperty ('http.proxyHost', 'www.somehost.org')?;蛘?,可以在構(gòu)建的根目錄或 Gradle 主目錄中的 gradle.properties 文件中指定這些屬性。

配置 HTTP 代理服務(wù)器

gradle.properties

systemProp.http.proxyHost=www.somehost.org
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=userid
systemProp.http.proxyPassword=password
systemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhost  

對于 HTTPS 有單獨的設(shè)置。

配置 HTTPS 代理服務(wù)器

gradle.properties

systemProp.https.proxyHost=www.somehost.org
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=userid
systemProp.https.proxyPassword=password
systemProp.https.nonProxyHosts=*.nonproxyrepos.com|localhost   

我們無法很好地概述所有可能的代理服務(wù)器設(shè)置。其中可以去看的一個地方是 Ant 項目的一個文件中的常量。這里是SVN的視圖的鏈接。另一個地方是 JDK 文檔的網(wǎng)絡(luò)屬性頁。如果有人知道更好的概述,請發(fā)郵件讓我們知道。

NTLM 身份驗證

如果您的代理服務(wù)器需要 NTLM 身份驗證,您可能需要提供驗證域,以及用戶名和密碼。有兩種方法可以向 NTLM 代理提供驗證域:

  • 將 http.proxyUser 系統(tǒng)屬性設(shè)置為一個這樣的值:域/用戶名。
  • 通過 http.auth.ntlm.domain 系統(tǒng)屬性提供驗證域。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號