許多客戶在做 Java 持續整合時無法使用外部網路,即代表不能從外部 Maven Repository 下載套件並進行編譯,必須從開發環境下載需要的套件,並放置在內部的套件管理伺服器代理程式 (Agent or Runner) 內某個資料夾作為 Local Repository。

因為工作關係,最近遇到許多此類問題,這邊簡單紀錄 Maven 透過使用 settings.xml 方式,讓原先從 預設的 使用者資料夾/.m2/repository 資料夾,改為指定本地資料夾作為 Repository。本篇文章若有錯誤或任何建議,請各位前輩不吝提出。






首先我們先在內部建置環境建立 Local Repository,在本文範例中我們在 Maven 資料夾下建立一個 repository 資料夾,放置 Maven 建置需要的套件。  




我們在 repository 資料夾加入 settings.xml,在內部宣告 local repository 位置,內容如下:


然後回到開發環境(可以從外部下載套件的開發環境) 編譯專案,讓套件下載至 使用者資料夾/.m2/repository 資料夾。開啟命令提示字元或命令列,切換目錄到專案資料夾,指令為


mvn -f pom.xml pakcage



完成後,您可以到 使用者資料夾/.m2/repository 資料夾,可以看見套件已經完整下載



在 repository 資料夾下搜尋 _remote.repositories。這個檔案會在每個套件資料夾下,若存在,執行 mvn 指令時會連線到外部下載套件。刪除所有 _remote.repositories 檔案





將 使用者資料夾/.m2/repository 資料夾內容複製到內部建置環境的 Local Repository 資料夾下。切換到專案資料夾下




輸入下列指令,即可在沒有網路的情況下,使用 Local Repository 進行Maven Build (因為我的範例專案有跑測試,所以執行有測試步驟)

mvn -f pom.xml -s c:\mvn\bin\repository\settings.xml -o pakcage