2012-04-24 28 views
3

我的團隊使用Eclipse處理多個Java項目,並使用代碼存儲庫共享代碼。在代碼庫中同步Eclipse .classpath

當開發人員添加,刪除或更新jar文件時,該構建對其他人都是中斷的,直到他們在Eclipse中更新其構建路徑。這個過程涉及繁瑣的電子郵件同步。

由於多種原因,我們決定不將.classpath文件提交給回購。相反,我們提出了以下想法:每個項目都有一個承諾文件,例如jars.list,其中包含jar文件(和模式)的列表。一個腳本會將這個文件轉換爲本地的日食.classpath。每當開發人員更換罐子時,他/她有責任更改jars.list並提交。

這是一個合理的解決方案?這個問題有沒有現有的解決方案?

+0

檢查.classpath和.project到源代碼控制是預期的方法 - 他們的目的是做到這一點。你爲什麼不這樣做? – 2012-04-24 21:33:58

+0

由於個人配置,恐怕會有很多衝突。 – 2012-04-25 07:38:05

+0

這沒有任何意義。 '.classpath'文件旨在被共享;您可以通過各種技術使其免於絕對路徑,例如在項目中存儲JAR,擁有單獨的「Libs」項目,使用Classpath Variables等等。底線是「.classpath」中的chcking是預期的通過一些精心製作的手動流程來完成你想要做的事情。 – 2012-04-25 14:35:41

回答

4

的Eclipse .project.classpath文件旨在/設計爲簽入版本控制庫(CVS,SVN,GIT中,等等)。請參閱Eclipse wiki中的this page

有幾種方法可以保持.classpath文件「乾淨」(即,沒有絕對路徑),我在上面的註釋部分中提到過。

+0

看起來像正確的做法。唯一的問題是JRE,它表現在'.classpath'中,但是是機器特有的:http:// stackoverflow。com/questions/10371512/eclipse-classpath-in-svn-jre-collision – 2012-04-29 10:46:20

+0

正如該問題的答案之一所指出的那樣,使用Execution Environment是指定所需Java版本的正確方法。機器特定的JRE規格是歷史遺留的,應該從配置選項IMO中刪除。執行環境是物理JRE位置之上的抽象,它使您的.classpath保持「乾淨」和便攜。 – 2012-04-29 22:04:16

2

構建被破壞,因爲每個開發人員機器中JAR的絕對路徑是不同的?如果是這樣,你可以添加一個用戶變量來避免這個問題,這樣每個開發人員只需要配置一個變量(如LIB_DIR):

<classpathentry kind="var" path="LIB_DIR/path/to/file.jar"/> 

還有其他的解決方案。您可以在eclipse中配置一些用戶庫來分組您的JAR,然後導出可在您的回購庫中共享的.userlibraries文件。這樣,.classpath將不會有絕對路徑,但它們會出現在您的.userlibraries中。

您也可以使用像Maven這樣的工具來管理項目的依賴關係。

無論如何,我認爲你可以沒有問題分享.classpath ...