2010-09-14 66 views
1

基本上,我有一個項目和一個持續集成解決方案,我沒有管理員訪問權限,無法訪問我們的網絡。因此,我想將項目的所有jar部署到CI解決方案可以訪問的中央Maven存儲庫中。他們在我本地的回購,但這是一個非常複雜的項目。難道我不能只是設置一個標誌或東西,同時部署一個jar和我在本地repo中擁有的jar依賴的其他東西?我想部署一個jar,並且它依賴於遠程存儲庫

好吧,自從我第一次寫這篇文章以來,我已經有了自己的想法。這個怎麼樣:

  1. 把我的本地maven倉庫關閉到一個新的名稱。
  2. 使用-U標誌執行構建,以便只用我需要的項目創建新的回購。
  3. 執行從新創建的本地回購到遠程回購的合併。

回答

1

什麼dborba說。我會編寫一個(bash/ruby​​)腳本來運行Maven Dependency Plugin,然後用依賴插件報告的GAE屬性運行deploy-file。假設我有更多的依賴關係。某些存儲庫管理員(例如Nexus)擅長制定GAE信息。

+0

我喜歡你的方法(+1),但我會用Groovy/GMaven這樣做,因爲這樣你可以從POM內做到這一點:http://docs.codehaus.org/display/GMAVEN /執行+ Groovy的+代碼 – 2010-09-15 07:06:01

0

檢查出Maven Deploy Plugin描述和用法。我認爲部署文件mojo雖然打算部署未由maven構建的工件,但可能會幫助您按照自己的意願進行操作。

1

這是我如何清盤處理這個:

首先我複製了我的本地Maven回購開了一個新的名字。然後我運行「mvn -U clean install」確保生成的本地maven倉庫只包含這個特定版本所需的罐子。接下來,我創建了這個腳本(詳細爲Windows用戶解釋):

#!/bin/bash 

for I in `find ~/.m2 -name "*.jar"` 
do 
     J=`echo $I | sed 's/jar$/pom/'` 
     mvn deploy:deploy-file -DpomFile=$J -Dfile=$I -Durl=dav:http://maven.our.repo/maven2 -DrepositoryId=sharedRep 
done 

對於那些誰不讀BASH,它抓住所有jar文件的完整路徑和文件名的子目錄中的.m2用戶的主目錄。這通常是用戶本地回購所在的位置。然後它複製該文件,並將副本上的文件擴展名從「jar」更改爲「pom」。然後我們執行下面的maven命令:

mvn deploy:deploy-file -DpomFile=[pom file name here] -Dfile=[jar file name here] -Durl=dav:http://maven.our.repo/maven2 -DrepositoryId=sharedRep 

這似乎可以讓我的本地庫中的庫到共享倉庫。