2009-08-13 52 views
5

我想要做的就是強制Maven爲我的本地存儲庫中的每個工件下載'maven-metadata.xml'。如何強制Maven從中央資源庫下載maven-metadata.xml?

默認的Maven行爲是僅從遠程存儲庫下載元數據(請參閱this question)。

我爲什麼要這麼做:

目前我有在構建機中運行的遠程倉庫。通過遠程存儲庫,我的意思是位於構建機器中的一個目錄,其中包含構建我的Maven項目所需的所有依賴關係。請注意,我沒有使用像Nexus這樣的存儲庫管理器,存儲庫只是我上傳到我的構建機器的本地存儲庫的副本。

但是,由於我的本地存儲庫不包含'maven-metadata.xml'文件,因此這些元數據文件在構建機器存儲庫中也缺失。如果我可以從中央存儲庫檢索元數據文件,那麼可以將工作的遠程存儲庫上傳到我的構建機器。

+0

存儲庫的離線我不清楚你的意思是什麼,或者爲什麼你需要這樣做。你能解釋你想達到什麼嗎? – 2009-08-13 17:31:18

回答

8

您不想從公共存儲庫獲取元數據,它將包含給定工件的所有可用版本,而您的存儲庫將包含某些發行版的子集。

值得指出的是,使用存儲庫管理器確實會更好。以下步驟允許您一次生成工件元數據。但是,如果您的需求發生變化,您必須重複此過程或手動更新文件,那麼爲什麼不使用經理呢? Nexus可以獨立運行,佔地面積非常小。


即使您不打算將Nexus用於存儲庫管理器,仍然可以使用它來生成元數據。

  1. 第一個install Nexus。
  2. 找到的聯繫工作目錄(默認爲$ {}的user.home/Sonatype的工作。
  3. 本地資源庫內容複製到Nexus工作/釋放子目錄。
  4. Start Nexus並連接到Nexus主頁在瀏覽器(默認爲http://localhost:8081/nexus
  5. 登錄使用管理員帳戶(密碼爲admin123)
  6. 點擊左側的鏈接。
  7. 選擇發佈信息庫中,右鍵單擊,然後單擊重建的元數據

在幾分鐘的時間,你應該對所有的文物生成的元數據。然後,您可以將它們複製到需要它們的位置並卸載Nexus。

+1

我同意,他需要爲構建和本地機器共享回購站。他沒有辦法保持元數據的兩個副本同步 – sal 2009-08-13 20:35:52

+1

該解決方案爲我工作。另外,感謝sal的建議,但我真正需要的是解決問題的方法,儘管我明白這不是理想的解決方案...... – 2009-08-20 23:02:00

4

默認存儲庫在super pom.xml中定義,默認情況下所有poms都繼承。

如果通過本地表示您只想使用〜/ .m2/repos/*,則可以在脫機模式下工作。添加<offline>true</offline>settings.xml

如果地方你的意思是你本地服務器,你可以安裝一個倉庫管理器,如Nexus,修改設置文件中使用的「鏡子」下關係是這樣的:

<mirror> 
    <id>central-proxy</id> 
    <mirrorOf>central</mirrorOf> 
    <url>my/local/nexus/server</url> 
</mirror> 

並禁用Nexus中不需要的遠程存儲庫。

+0

本地我的意思是〜/ .m2/repos/*,但是如果使用標記或-o標誌,Maven將不會下載我想要的'maven-metada.xml'文件。 – 2009-08-13 17:18:18

+0

我認爲你需要有不同的構建,併爲您遠程計算機部署回購。有構建機器使用共建本地Maven回購,然後換個地方在磁盤上進行部署。使用一些服務器來使第二個存儲庫可見。您還需要將本地構建部署到第3個回購站。元數據將在這種情況下自行排列。 – sal 2009-08-13 19:58:16

+0

什麼和爲什麼''?以上描述正在幫助我。 – hari 2016-02-19 13:11:56

1

一兩件事,我發現是有人在做初始搜索jarvana的,並放置在該聚甲醛中,導致出現錯誤的元數據信息。這...

<!-- <repository> 
     <id>jarvana</id> 
     <url>http://www.jarvana.com/jarvana/browse/</url> 
    </repository> --> 

..固定它,錯誤消失。

0

倉庫管理器是偉大的,但我不想安裝在我的筆記本上運行。我只是想節省資源。 所以,我的解決方法是如下:

  1. 安裝庫爲artifactory的(https://www.jfrog.com/artifactory
  2. 運行兌現通過這個服務器(本地主機:8081)
  3. 運行兌現通遠程服務器(center.maven.org)
  4. artifactory的
  5. 合併
  6. 下載緩存內容的文件夾:從〜/ .m2目錄/存儲庫的步驟4和文件夾的文件夾中下載。

現在我有全部內容(二進制文件,源,XML,MD5,SHA1)