Maven 依賴項因 501 錯誤「需要 HTTPS」而失敗
1. 概述
在本教程中,我們將了解錯誤「回傳代碼為:501,ReasonPhrase:需要 HTTPS」。我們將首先了解此錯誤的含義,然後探討解決該錯誤的步驟。
2.Maven 遷移到 HTTPS
Maven 確保從Maven 中央儲存庫自動下載外部程式庫。然而,透過 HTTP 下載會引發安全性問題,例如中間人 (MITM) 攻擊的風險。在此攻擊期間,可能會在建置階段注入惡意程式碼,這可能會感染下游元件及其最終用戶。
為了維護資料完整性和加密, Maven 中央儲存庫從 2020 年 1 月 15 日起已停止透過 HTTP 進行通訊。這意味著任何使用 HTTP 存取中央儲存庫的嘗試都會導致錯誤「傳回代碼為:501,ReasonPhrase:需要 HTTPS」。為了解決這個問題,我們需要確保使用 HTTPS 而不是 HTTP 來取得依賴項。
3.更新Maven版本
從 Maven 版本 3.2.3 開始,預設會透過 HTTPS 存取中央儲存庫。如果我們使用的是舊版的 Maven,我們可以將 Maven 版本更新到 3.2.3 或更高版本來修復錯誤。
要更新Maven版本,我們可以從官方Apache Maven下載頁面下載最新的穩定建置版本。
4.限制當前Maven版本使用HTTPS鏈接
Maven 提供了一個設定檔settings.xml,
我們可以使用它來設定 Maven 安裝。此settings.xml
檔案包含所有本機和遠端儲存庫連結。要修復此錯誤,我們需要確保在 Maven 設定中使用 HTTPS。以下是驗證和更新 Maven 設定的步驟:
4.1.修復settings.xml
中的mirrors
部分
如果settings.xml
檔案中存在 https://repo.maven.apache.org/maven2/
。如果該部分不存在,我們可以像這樣添加它:
<mirrors>
<mirror>
<id>central</id>
<url>https://repo.maven.apache.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
4.2.修復settings.xml
中的pluginRepositories
部分
與鏡像部分類似,我們可能還有一個pluginRepositories
部分,我們需要在其中使用HTTPS的URL:
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2/</url>
</pluginRepository>
</pluginRepositories>
4.3.修復pom.xml
中的repositories
部分
pom.xml
檔案也包含一個儲存庫部分,我們需要在其中使用 HTTPS 的 URL:
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
進行這些變更後,Maven 應透過 HTTPS 下載依賴項。
5.修復建置環境不支援HTTPS的問題
有時,我們可能會面臨技術限制,例如在建置環境中使用JDK6或缺乏HTTPS支援。這些限制可能會阻礙我們向 HTTPS 的過渡。
為了支援此類場景,Maven 團隊為不安全流量建立了專用網域。我們可以用這個 URL 取代所有現有的引用,以方便透過 HTTP 下載。
六,結論
在本教程中,我們探索了解決「返回代碼為:501,ReasonPhrase:需要 HTTPS」錯誤的不同方法。首先,我們探討了錯誤的基本細節。
隨後,我們透過更新 Maven 版本或修復settings.xml
檔案來查看修復情況。