許多客戶在做 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 資料夾。開啟命令提示字元或命令列,切換目錄到專案資料夾,指令為
完成後,您可以到 使用者資料夾/.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
0 留言