Gradle 代理程式配置
1. 概述
代理伺服器充當客戶端和伺服器之間的中介。它有助於評估來自客戶端的請求,然後根據特定標準將請求轉送到目標伺服器。這使系統可以靈活地確定連接或不連接哪個網路。
在本教程中,我們將學習如何配置 Gradle 以在代理伺服器後面工作。在我們的範例中,我們的代理程式在 localhost 上運行,並使用用於 HTTP 和 HTTPS 連接的代理連接埠3128
。
2. 代理配置
我們可以將 Gradle 配置為在有或沒有身份驗證憑證的代理伺服器後面工作。
2.1.基本代理配置
首先,讓我們設定一個不需要身份驗證憑證的基本代理程式配置。首先,我們在 Gradle 專案的根目錄中建立一個名為gradle.properties
的檔案。
接下來,讓我們在gradle.properties
檔案中定義代理伺服器的系統屬性:
systemProp.http.proxyHost=localhost
systemProp.http.proxyPort=3128
systemProp.https.proxyHost=localhost
systemProp.https.proxyPort=3128
在這裡,我們定義 Gradle 將在建置過程中使用的系統屬性。我們為 HTTP 和 HTTPS 連線定義系統屬性。在這種情況下,它們都具有相同的主機名稱和代理連接埠。
另外,我們可以在gradle.properties
檔案中指定一個主機來繞過代理伺服器:
systemProp.http.nonProxyHosts=*.nonproxyrepos.com
systemProp.https.nonProxyHosts=*.nonproxyrepos.com
在上面的設定中,子網域nonproxyrepos.com
將繞過代理伺服器並直接從伺服器請求資源。
或者,我們可以透過終端機運行./gradlew build
命令,並將系統屬性作為選項:
$ ./gradlew -Dhttp.proxyHost=localhost -Dhttp.proxyPort=3128 -Dhttps.proxyHost=localhost -Dhttps.proxyPort=3128 build
在這裡,我們定義系統屬性以透過終端連接到代理伺服器。
值得注意的是,透過終端定義系統屬性會覆寫gradle.properties
檔案的配置。
2.2.新增身份驗證憑證
在代理程式受到保護的情況下,我們可以將身份驗證憑證新增至gradle.properties
檔案:
systemProp.http.proxyUser=Baeldung
systemProp.http.proxyPassword=admin
systemProp.https.proxyUser=Baeldung
systemProp.https.proxyPassword=admin
在這裡,我們透過定義使用者名稱和密碼的系統屬性來新增身份驗證憑證。此外,我們也為 HTTP 和 HTTPS 連線實作驗證憑證。
或者,我們可以透過終端指定使用者名稱和密碼:
$ ./gradlew -Dhttp.proxyHost=localhost -Dhttp.proxyPort=3128 -Dhttps.proxyHost=localhost -Dhttps.proxyPort=3128 -Dhttps.proxyUser=Baeldung -Dhttps.proxyPassword=admin build
在這裡,我們在終端命令中包含身份驗證憑證。
3. 可能出現的錯誤
如果主機名稱和代理連接埠不正確,可能會發生錯誤:
> Could not get resource 'https://repo.maven.apache.org/maven2/io/micrometer/micrometer-core/1.12.0/micrometer-core-1.12.0.pom'.
> Could not GET 'https://repo.maven.apache.org/maven2/io/micrometer/micrometer-core/1.12.0/micrometer-core-1.12.0.pom'.
> localhosty: Name or service not known
在這裡,建置失敗,因為我們錯誤地將代理主機寫為“ localhosty
”而不是“ localhost”
。
此外,如果我們在gradle.properties
檔案和命令列中定義系統屬性,則命令列定義在建置過程中具有最高優先權:
$ ./gradlew -Dhttp.proxyHost=localhost -Dhttp.proxyPort=3120 -Dhttps.proxyHost=localhost -Dhttps.proxyPort=3120 build
這裡,命令列中的代理埠值為3120,這是錯誤的。 gradle.properties
檔案代理連接埠值為 3128,這是正確的。但是,建置失敗並顯示以下錯誤訊息:
> Could not get resource 'https://repo.maven.apache.org/maven2/io/micrometer/micrometer-core/1.12.0/micrometer-core-1.12.0.pom'.
> Could not GET 'https://repo.maven.apache.org/maven2/io/micrometer/micrometer-core/1.12.0/micrometer-core-1.12.0.pom'.
> Connect to localhost:3120 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused
這裡,代理伺服器拒絕連接,因為命令列參數中的代理連接埠定義是錯誤的,儘管gradle.properties
檔案代理連接埠值是正確的。命令列參數定義優先於gradle.properties
值。
此外,當安全代理伺服器中的驗證憑證錯誤時,代理伺服器將拒絕連線。為了避免這些錯誤,需要正確檢查配置。
4。結論
在本文中,我們學習如何透過在gradle.properties
檔案中定義所需的系統屬性來將 Gradle 配置為在代理程式後面工作。此外,我們也了解如何透過終端定義系統屬性。最後,我們看到了一些容易犯的錯誤以及如何避免它們。
與往常一樣,完整的範例程式碼可以在 GitHub 上找到。