[英]Using multiple local repositories while building Maven
在構建一個軟件包時,如何配置Maven以使用多個本地存儲庫?
我有兩個文件夾, ~/.m2/repository
(Maven的默認設置)和~/local_repo_tmp
,想要實現以下內容:
如果Maven在~/local_repo_tmp
內找不到東西,則必須從遠程存儲庫下載並放入~/.m2/repository
,否則必須將~/local_repo_tmp
的副本放入~/.m2/repository
。
我嘗試將以下內容添加到我的pom.xml
:
<repositories>
<repository>
<id>firstrepo</id>
<name>repo</name>
<url>file:///Users/myusername/local_repo_tmp</url>
</repository>
</repositories>
但是似乎不起作用,因為執行以下操作需要花費相同的時間:
~/local_repo_tmp
和~/.m2/repository
都為空 ~/local_repo_tmp
是~/.m2/repository
以前狀態的副本,但是~/.m2/repository
為空時 我做錯了什么?
基本上,您擁有正確的方法。 您設置了第二個“遠程存儲庫”,並允許它們都填充通常在~/.m2/
目錄中找到的“本地存儲庫”
也就是說,本地和遠程存儲庫之間存在一些細微的差異。 僅將~/.m2/repository/
目錄復制到本地安裝的“遠程”存儲庫中可能不會獲得所需的結果。
您可能需要登錄到遠程存儲庫,或至少通過Web界面瀏覽它,以查看遠程存儲庫與本地存儲庫之間的差異。 基本上,本地存儲庫中有一些細微的變化,這些變化在幫助確定本地緩存是否比遠程緩存更早時更有意義。 對於“本地遠程”,您需要模擬遠程存儲庫的文件設置,而不是本地的副本/克隆。
您列出遠程存儲庫的順序將控制您從哪個存儲庫接收工件。 如果在第一個存儲庫中找到它,只要您在現代Maven上,您都將從第一個存儲庫中獲取軟件包。 否則,您將從第二個存儲庫中獲取軟件包。
有時人們想要他們使用的遠程倉庫的本地倉庫緩存。 在那種情況下,我建議設置一個本地Artifactory實例,並將其配置為上游倉庫的緩存鏡像。
自從我按照您的要求進行了很長時間以來,但是我可以確認我已經成功了。 我不記得其中一個細節,但是我記得從文件URL和ssh URL都使用它。 我記得兩者之一可以更好地達到我的目的,但是不確定哪一個以及為什么。
祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.