2012-09-20 29 views
0

使用maven來管理Java EE項目並將所有jar依賴關係放入pom.xml是非常好的,這樣就不需要將這些大的jar文件添加到您的git版本控制倉庫中。你會把jar文件git回購?或者你只會在pom.xml中定義它?

這真是太棒了,特別是當所有的依賴都在maven中央倉庫時。

如果有一些未包含在maven中央倉庫中的jar lib,你會將這些jar庫添加到git倉庫嗎?或者你只會將這些文件上傳到你的本地nexus服務器? (無論如何,這是不好的,如果有一天,你不與你的本地連接服務器

所以你會選擇將jar文件到git回購?或者你只會在pom.xml中定義它?當這些jar庫不包含在maven的中央倉庫中時。

回答

2

我認爲最好的辦法,以保持局部的Nexus庫的依賴關係(在pom.xml中定義它),而不是版本控制系統

+0

但有時你可能會出局,並且無法連接到該服務器,甚至在幾年之後,甚至更糟的是,本地repo不再存在,那麼如何構建代碼,因爲mvn只能獲取包含的jar庫通過它的中央回購 – hugemeow

+1

@hugemeow同樣好,你可能有一天沒有你的存儲庫。這就是爲什麼你應該小心保持它們,兩者。這並沒有改變這是最推薦的解決方案,並將它們保留在同一個git倉庫中有很大的缺點。 – eis

+0

@eis有時我無法連接到我的本地回購,例如,我不是int公司,那麼最好把這些jar文件放到git repo中? – hugemeow

0

如果本地服務器是不是一種選擇,那麼你可以使用Git發佈的依賴。

這裏是例如URL的: https://github.com/plokhotnyuk/calculator/raw/master/repo

和債券回購的內容應從本地的倉庫被複制: https://github.com/plokhotnyuk/calculator/tree/master/repo

+0

無法打開https://github.com/plokhotnyuk/calculator/raw/master/repo,所以你會包括你的jar庫git repo? – hugemeow

+1

是的,你不能打開目錄內容,但是當maven獲得全路徑的依賴時 - 它們可用:https://github.com/plokhotnyuk/calculator/raw/master/repo/com/googlecode/windowlicker /windowlicker-core/268/windowlicker-core-268-sources.jar –

+0

just clon e該項目並嘗試用maven或sbt構建以查看它是如何工作的 –

1

顯然你在託管的GitHub代碼,並用它從下列場所並不總是在你的公司內部網中。基本上,您可以使用以下解決方案:

  1. 通過身份驗證在您自己的公用服務器上託管一個nexus(或類似)存儲庫。這樣它就可以從任何你想要的地方訪問。例如,它也可以在Amazon上完成。
  2. 使用一些免費,開放,託管的解決方案。例如,免費託管開源項目的Sonatype offers
  3. 作爲already suggested,你可以host your maven repo also on github - 不要將它存儲在你的代碼回購,爲它創建一個單獨的項目!
  4. 或..只需支付託管。如果您願意爲此付費,應該有一些支持的解決方案。

這些都應該適合你。從描述你的情況的方式來看,可能的選擇3就是你想要的。任何情況下,讓他們在別的地方比你的代碼庫。

編輯:可能我還忽略了一個封閉源代碼開發的最不言而喻的解決方案,因此這將是一個另類5.從a comment

在這種情況下做的最明智的事情將是隻需將 存儲庫置於防火牆之後,並允許外部人員通過您的VPN訪問 。您可以設置一個可公開訪問的 服務,該服務要求所有用戶提供某種憑證 但爲什麼當您不需要任何人從外部開放您的資源庫到外部世界(以及所有需要的風險 )時 組織使用它?假設你有一個VPN - 但是如果你有遠程員工,你應該有一個VPN,以便他們可以安全地訪問你的內部服務。

如果您的回購不是公共回購,這聽起來很合理。

+0

選項3並不好,因爲快照和發佈應該在Maven存儲庫中保持分離,這意味着我應該將所有的庫存放在github上,這可能太大了,我想要的只是託管不在maven中的jar庫中央回購 – hugemeow

相關問題