2016-03-22 59 views
0

我正在使用IntelliJ IDEA Community Edition 2016.1。 我把我的項目放在Git下,託管在GitHub上。正確處理IntelliJ IDEA中版本控制下的依賴關係

我在跨存儲庫處理模塊依賴性時遇到問題。

當配置到特定JAR的路徑時,這些路徑在不同平臺之間有所不同。例如,在我的Windows 7機器上,它們存儲在D:\Francesco\Lib中,而在我的Windows 10機器上,它們存在於C:\Users\Francesco\IdeaDependencies

問題是,如果我選擇同步模塊IML文件,每個平臺上的路徑將相同,這不會讓IDE找到它們。

我該如何處理這個問題?

回答

0

如果您正在尋找簡單的解決方案,請將您的依賴項與您的項目文件一起存儲,就像其他任何資源一樣。

您可以在模塊的內容根目錄下創建一個名爲libexcluded文件夾,並用它來存儲您的庫。這樣,他們的路徑將相對於您的項目文件夾(例如file://$PROJECT_DIR$/lib/gson-2.6.2.jar),並且您不必爲每個平臺調整它們。

1

在項目中使用依賴關係作爲子模塊,這樣你就不會在乎它們在磁盤上的位置。

Submodules允許外國庫被嵌入專用的子目錄中的源代碼樹的內,總是指着一個特定的提交。


git submodule

打破你的大項目,子項目爲你做了這麼遠。
現在,使用各子項目添加到您的主要項目:

git submodule add <url> 

一旦項目被添加到您的回購,你必須初始化和更新。

git submodule init 
git submodule update 

作爲GIT中1.8.2新選項--remote的溶液中加入:

git submodule update --remote --merge 

這將fetch從上游每個子模塊中的最新變化,merge them in,和check out子模塊的最新版本。

由於the docs形容它:

--remote

此選項僅適用於update命令。使用子模塊的遠程跟蹤分支的狀態,而不是使用超級項目的已記錄的SHA-1來更新子模塊。

這相當於在每個子模塊中運行git pull


然而,我將如何推提交在錯誤修正的用C影響與父層共享的代碼的情形?

還是那句話:使用子模塊將會把你的主要項目中的代碼作爲其內容的一部分。將它置於文件夾內部或將其作爲子模塊的一部分之間的區別在於,在子模塊中,內容被管理(提交)到不同的獨立存儲庫。


這是子模塊的示意圖 - 項目另一個項目,其中,每個項目是一個獨立的項目內:

enter image description here


git subtree

它允許你插入任何存儲庫作爲另一個的子目錄。

submodule非常相似,但主要區別在於代碼的管理位置。在子模塊中,內容放置在一個單獨的回購站中,並在那裏進行管理,從而允許您將其克隆到其他許多回購站。

subtree被管理內容作爲根項目的一部分,而不是在一個單獨的項目。

而不是寫下如何設置和了解如何使用它,你可以簡單閱讀this excellent post這將解釋這一切。

相關問題