簡體   English   中英

在構建Maven時使用多個本地存儲庫

[英]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>

但是似乎不起作用,因為執行以下操作需要花費相同的時間:

  1. 當構建我的項目時, ~/local_repo_tmp~/.m2/repository都為空
  2. ~/local_repo_tmp~/.m2/repository以前狀態的副本,但是~/.m2/repository為空時

我做錯了什么?

基本上,您擁有正確的方法。 您設置了第二個“遠程存儲庫”,並允許它們都填充通常在~/.m2/目錄中找到的“本地存儲庫”

也就是說,本地和遠程存儲庫之間存在一些細微的差異。 僅將~/.m2/repository/目錄復制到本地安裝的“遠程”存儲庫中可能不會獲得所需的結果。

您可能需要登錄到遠程存儲庫,或至少通過Web界面瀏覽它,以查看遠程存儲庫與本地存儲庫之間的差異。 基本上,本地存儲庫中有一些細微的變化,這些變化在幫助確定本地緩存是否比遠程緩存更早時更有意義。 對於“本地遠程”,您需要模擬遠程存儲庫的文件設置,而不是本地的副本/克隆。

您列出遠程存儲庫的順序將控制您從哪個存儲庫接收工件。 如果在第一個存儲庫中找到它,只要您在現代Maven上,您都將從第一個存儲庫中獲取軟件包。 否則,您將從第二個存儲庫中獲取軟件包。

有時人們想要他們使用的遠程倉庫的本地倉庫緩存。 在那種情況下,我建議設置一個本地Artifactory實例,並將其配置為上游倉庫的緩存鏡像。

自從我按照您的要求進行了很長時間以來,但是我可以確認我已經成功了。 我不記得其中一個細節,但是我記得從文件URL和ssh URL都使用它。 我記得兩者之一可以更好地達到我的目的,但是不確定哪一個以及為什么。

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM