2012-11-18 27 views
2

我是Git和GitHub的新手,雖然我已經使用Eclipse多年了。我想將我的一些個人Java項目上傳到GitHub,但它們形成了一個複雜的依賴關係樹,它們都使用Eclipse項目依賴關係進行引用(即每個項目在其類路徑中都有其他Eclipse項目)。如果可能的話,我想盡量避免使用Maven(我在工作中使用它,但是它很慢,有bug,還有PAIN,更不用說我必須在GitHub的獨立位置運行自己的倉庫),而且我會如果解決方案允許用戶使用或不使用Eclipse來編譯項目(可能使用Ant構建文件或其他),則更喜歡。將具有許多項目依賴關係的Eclipse項目上傳到GitHub的標準方法?

我的問題是:是否有上傳的GitHub庫與其他庫的依賴一些標準的方法是什麼?看來子模塊是我正在尋找的東西,但是會在每個其他項目中創建每個項目的重複項嗎?或者Maven真的是最好的/唯一的方法來正確地做到這一點?如果用戶只需要git cloneant build,並且下載並準備好所有項目的依賴關係,並且不會嚴重影響我的項目結構,那麼我希望這樣做。

這種設置的一個例子:我有3個Eclipse項目,A,B,和C. B和C是在A的類路徑,但A,B和C都是在分開的GIT中儲存庫。我希望用戶能夠git cloneant build A,並且在此過程中的某個時刻,會自動下載B和C,以便A進行編譯。

+1

爲了簡單起見,考慮使用Maven組織它們作爲[多模塊項目](http://www.sonatype.com/books/mvnex-book/reference/multimodule.html)並使用單個git倉庫存儲一切。 – yorkw

+0

你也可以考慮使用gradle而不是Maven,但是這些想法或多或少都是相同的,這意味着在gradle中也有多模塊構建。否則,您將複製信息。 Git中的子模塊是解決VCS不應解決的問題的一種想法。 – khmarbaise

回答

0

如果我理解正確的問題,你想你的項目分成多個存儲庫,然後用一些自動機制,無論是在git的克隆或在構建階段獲得的所有依賴傳遞性。出於這個原因,你想要在配置中的某個地方編碼這個依賴信息。

我看到三個基本方案來解決這個問題(無論建造技術):

  1. Git的子模塊編碼在git倉庫這一信息。這樣,你就無法檢出你的項目沒有依賴關係。但是,如您所述,這可能導致多次下載相同的存儲庫。

  2. 另一種方法是在構建系統中編碼這些信息。在這種情況下,每個存儲庫都有一個單獨的版本,而所有構建的二進制文件都放入一個公共存儲庫(Maven或Eclipse p2存儲庫,甚至中央FTP存儲可能會這樣做);在構建期間從此中央存儲庫查詢依賴關係。

  3. 或者,你可以問你的用戶,以確保所有需要的源項目可以(在Eclipse中你可以使用一個團隊項目爲此設置),然後建在一起。

根據我的經驗,解決方案2或3是最常見的解決方案。如果您可以設置任何類型的存儲庫,這是最好的方式,因爲您可以獨立構建和重用所有項目(這對插件項目來說是一個巨大的優勢)。我確定可以在SVN或Git中託管一個p2存儲庫,因爲只有HTTP請求用於下載源代碼。我相信,對Maven倉庫來說也是一樣,但我還沒有見過這樣的倉庫工作。

所以,我建議你建立一個P2存儲庫(可在螞蟻可以做到,但在Maven的第谷看起來簡單),並拆分項目的幾個倉庫。

相關問題