2011-10-20 38 views
12

我們有一個使用Eclipse和Maven的多模塊項目。我可以在過去使用它的唯一方法是爲項目使用平面佈局,其中父模塊與其他模塊同等。這適用於m2eclipse和Subversion。Eclipse + Maven + Git +多模塊項目=不快樂

現在我們要轉移到Git和GitHub。我想將整個項目以及所有模塊公開爲GitHub上的單個項目。問題是EGit,Eclipse/Git插件希望一次管理一個項目,而不是一組項目,所以如果你有一個平面佈局,你不能這樣做。

正確的答案是使用標準的Maven層次佈局,並將父級和所有模塊作爲一個單元進行管理。但是Eclipse不喜歡這一點,並且沒有太多的搗蛋會讓Eclipse接受嵌套的項目。 m2Eclipse不支持層次結構:https://issues.sonatype.org/browse/MNGECLIPSE-2291

那麼你該怎麼做?從命令行執行Git並放棄查看Eclipse中哪些文件已更改的功能?或放棄Eclipse?

回答

12

一個標準的Maven多模塊結構作爲一個單一的git回購對我來說在Eclipse Indigo中完全適用於M2e和在該環境中出現的git插件。你不能讓Eclipse爲你做點什麼,但是一旦你從命令行拉出來,你就可以使用Team/Share,稱爲'Git!'。一切都很好。

我想我看到了什麼來源:層次結構是工作區內的項目問題,而不是您導入的「現有項目」。

下面是一個典型的工作流程:

  1. 使用git svn的克隆得到了一棵樹。它是一個股票,分層mvn多模塊樹
  2. 在eclipse中,使用import/maven /現有的maven項目。指向整個樹
  3. 選擇所有
  4. OK

它工作正常。嵌套不會擾亂月食。我不知道bz指出什麼問題。

在我使用m2e之前,我使用了maven-eclipse-plugin。而且在這些情況下它也起作用,因爲它不會爲<packaging>pom</packaging>聚合項目生成.project/.classpath,所以Eclipse從不會被調用來實際嵌套任何東西。

我並不孤單 - 請參閱開發人員設置說明,以cxf.apache.org作爲開放源代碼示例,您可以自己嘗試。

+0

是您的結構層次或平面? – ccleve

+0

等級是我擁有的。 – bmargulies

+0

你是如何得到Eclipse來處理分層佈局的?我不能編譯。根據https://bugs.eclipse.org/bugs/show_bug.cgi?id=245412 Eclipse尚不支持它們。 – ccleve

1

你可以把你的模塊放在Git中,使用分層佈局。並由Maven構建這些模塊。如果這些模塊是由Eclipse識別的項目(無論是java,C++或php項目),它們可以作爲工作空間中的平面佈局導入到工作空間中。

-- the root of Git working directory 
    -- moudule1 
    -- project1(a java project) 
     -- .project(a project file recognized by eclipse JDT) 
     -- pom.xml 
    -- project2(a java project) 
     -- .project 
     -- pom.xml 
    -- module2 
    -- projectA(a java project) 
     -- .project(a project file recognized by eclipse JDT) 
     -- pom.xml 
    -- projectB(a c++ project) 
     -- .project(a project file recognized by CDT) 
     -- pom.xml 
+0

如何?如果它們以分層方式在磁盤上進行物理安排,那麼如何將它們導入平面? – ccleve

+0

工作區不關心項目所在的位置(可能位於工作區或磁盤上的任何位置)。每個項目在根文件夾下只有一個.project文件,Eclipse可以將其導入工作區而不將其複製到工作區中。看到我更新的答案。 – Kane

4

是否有可能您正在使用舊版本的工具?

我有一個使用Eclipse 3.7(Indigo),M2Eclipse(1.0)和EGit(1.0)的Maven多模塊項目。

在文件系統上,多模塊項目具有單個父目錄。

在Eclipse中,我爲每個模塊都有單獨的項目。

M2Eclipse完美地完成了依賴管理。

有一個在頂級單git倉庫(.git目錄),例如:It和完美的作品。

+0

+1因爲我使用的是舊版本,升級時一切都改變了。 – ccleve

+1

「在Eclipse中,我爲每個模塊都有單獨的項目。」對於那些想知道的,文件系統是一個工作層次結構,但m2eclipse仍然不允許您將父/子模塊作爲單個項目層次結構進行管理。 m2eclipse的每個模塊都必須在Eclipse中有一個項目,否則Eclipse將無法找到它們之間的類類型或關係。 – 2012-02-10 15:28:36

0

對於Maven項目,同時多個進口可通過Maven的導入嚮導實現(即從訪問GIT)。 如果您不知道要導入哪種類型的項目,可以使用新的Easymport,通過從各種文件中推導出配置,從而導入「最佳」項目。見https://github.com/jbosstools/jbosstools-playground#easymport-easy-and-smart-openimport-of-a-project

一旦你得到所有這些項目,你可以使用內斯特插件,它會在嵌套/分層佈局顯示項目,繪製更準確的Maven項目:https://github.com/jbosstools/jbosstools-playground#nestor-view-nested-projects