maven-default-http-blocker Blocked Mirror For Repositories

maven-default-http-blocker Blocked Mirror For Repositories

maven-default-http-blocker Blocked Mirror For Repositories

maven-default-http-blocker Blocked Mirror For Repositories

Maven 出現錯誤「Blocked mirror for repositories: maven-default-http-blocker (http://0.0.0.0/)」的原因,是因為 Maven 3.8.1 版本開始,默認禁止從使用不安全的 HTTP 協議的遠端倉庫下載依賴,為了防止中間人攻擊(MITM)而強制阻擋這類倉庫訪問。

造成問題的原因
項目依賴的某些 artifact 來自 HTTP 協議的倉庫(非 HTTPS)。

Maven 內建的設定檔中有一個名為 maven-default-http-blocker 的鏡像設定,用來阻止所有 HTTP 協議的外部倉庫訪問,避免安全風險。

當 Maven 碰到 HTTP 倉庫時會被此鏡像阻擋,傳回錯誤。

解決方案
將所有 HTTP 倉庫 URL 改為 HTTPS(最推薦、安全方案)
修改 pom.xml 或私服倉庫設定,改成 HTTPS 協議,讓 Maven 可以安全下載。

在本地 settings.xml 為特定倉庫定義鏡像,避開 http 阻擋
在 ~/.m2/settings.xml 添加鏡像配置,阻擋列表中排除你的私服倉庫,使其不被屏蔽。

移除或註解 Maven 裝置的 maven-default-http-blocker 鏡像設定(不推薦)
修改 Maven 安裝目錄中的 conf/settings.xml,將以下鏡像設定註解或刪除:

xml

maven-default-http-blocker
external:http:*
Pseudo repository to mirror external repositories initially using HTTP.
http://0.0.0.0/
true

但這會降低安全性,不建議使用。

降級 Maven 使用 3.8.0 或更早版本(臨時方案)
Maven 3.8.1 開始強制阻擋 HTTP 倉庫,舊版本不會,但不建議長期用此方案。

參考文件與說明
Maven 3.8.1 釋出說明中新增此安全機制

多個開發者社群討論中建議全面換成 HTTPS

可透過設定鏡像排除官方阻擋鏡像影響

綜合建議是檢查並更新所有倉庫連結為 HTTPS,或針對私服倉庫合理配置鏡像(mirror),避免被阻擋。