第20章 The Build Environment 構(gòu)建環(huán)境

2018-02-24 15:56 更新

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

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

  • 從 gradle.properties 在項(xiàng)目構(gòu)建 dir。
  • 從 gradle.properties 在 gradle user home.
  • 從系統(tǒng)屬性,例如當(dāng) -Dsome.property 在命令行上設(shè)置。

可以使用以下屬性來(lái)配置 Gradle 構(gòu)建環(huán)境:

org.gradle.daemon

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

org.gradle.java.home

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

org.gradle.jvmargs

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

org.gradle.configureondemand

啟用新的孵化模式,可以在配置項(xiàng)目時(shí)使得 Gradle 具有選擇性。只適用于相關(guān)的項(xiàng)目被配置為在大型多項(xiàng)目中更快地構(gòu)建。請(qǐng)參閱?Section 57.1.1.1, “Configuration on demand”.

org.gradle.parallel

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

20.1.1. Forked Java processes

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

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

20.2. Accessing the web via a proxy 通過(guò)代理訪(fǎng)問(wèn) web

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

xample 20.1. Configuring an HTTP proxy

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

對(duì)于 HTTPS 有單獨(dú)的設(shè)置。

Example 20.2. Configuring an HTTPS proxy

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ú)法很好地概述所有可能的代理服務(wù)器設(shè)置。其中可以去看的一個(gè)地方是 Ant 項(xiàng)目的一個(gè)文件中的常量。這里是Subversion 的視圖的鏈接。另一個(gè)地方是 JDK 文檔的Networking Properties(網(wǎng)絡(luò)屬性)。如果有人知道更好的概述,請(qǐng)發(fā)郵件讓我們知道。

20.2.1. NTLM Authentication

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

  • 將 http.proxyUser 系統(tǒng)屬性設(shè)置為一個(gè)這樣的值:域/用戶(hù)名。
  • 通過(guò) http.auth.ntlm.domain 系統(tǒng)屬性提供驗(yàn)證域。
以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)