2011-05-25 117 views
1

我正在與一個團隊合作,該團隊即將編寫一大堆Java應用程序,作爲大型項目的一部分。我們計劃將SVN用於我們的源代碼,但我們將依賴於其他一些不使用SVN的團隊。他們基本上將編寫一些我們將在我們的應用程序中使用的庫(以.jar的形式)。處理SVN中的依賴關係

我知道如果每個人都在SVN上,我們可能會使用svn:externals,但在不久的將來似乎不可能。現在我們可能只會每週從他們那裏得到更新的.jar文件。

我還是比較新的SVN,那麼處理這個問題的正確程序是什麼?我們是否將他們的.jar檢入我們的存儲庫?或者我們應該避免在SCM中使用二進制文件嗎?我們還探討了通過Maven使用依賴管理......這似乎是在團隊之間共享二進制文件的好選擇,但我不確定我們是否真的想要複雜的東西。

+1

您目前的構建解決方案是什麼?如果它是基於螞蟻的,遷移到Maven可能會非常痛苦。在這種情況下,我會建議ivy跟蹤依賴關係。 – Olaf 2011-05-25 18:19:16

回答

1

檢查庫,尤其是第三方(在你的情況下,我認爲你可以稱他們爲第三方),SVN(或任何SCM)不是什麼大不了的事情,你從這種簡單性中獲得了很多收益。請注意,如果瓶子或庫存過於龐大且頻繁更換,則可能會出現更復雜的問題(如Maven,Ivy等)

SVN擅長處理二進制文件及其差異。

+0

也許Maven除了收集最新版本的庫之外,什麼都不做,然後將它們轉儲到SVN中,並使用簡化的非版本化文件名? – 2011-05-25 18:26:13

+0

謝謝 - 這主要是我想知道的。庫很小,所以這可能是最簡單的路線。 – Andrew 2011-05-26 14:55:49

0

如果空間不是問題(在服務器上),我認爲檢查二進制文件甚至是您的依賴關係的源代碼不是錯誤的。這對每個人來說都更容易,這樣人們可以簡單地結賬並且沒有太多麻煩地建立起來。

0

如果二進制文件是很大,那麼我肯定會避免到倉庫檢查它們。我的建議是將最新版本的jars存儲在公共共享中,然後掛載到該共享並通過項目文件進行鏈接。這意味着只有一個人不得不更新二進制文件,而不是每臺機器,只要登錄商店的路徑保持不變即可。

如果它們不是太大,那麼檢查它們進入回購並不是什麼大不了的事情。

6

我發現依賴管理最好用maven或ivy版本庫來完成。 Artifactory和Nexus有免費版本。然後,您可以從構建腳本管理它們。 Ivy如果您使用的是Ant,MavenGradle。我更喜歡Gradle。

+1

二進制存儲庫管理器是最好的方法(無恥的插件:Artifactory的+1); VCS或網絡共享等臨時依賴管理方法缺乏許多重要功能(二進制版本管理,細粒度安全,代理和緩存遠程存儲庫,元數據等等)。 – noamt 2011-05-26 06:08:07

+0

謝謝 - 自問這個問題以來,我實際上已經能夠啓動並運行Maven。把事情配置得恰到好處是很棘手的,但是當它正確運行時我確實看到了很多好處。我將不得不玩一些場景來看看我的團隊最容易。 – Andrew 2011-05-26 14:57:48