2011-10-20 14 views
12

Abbiamo un progetto multi-modulo che utilizza Eclipse e Maven. L'unico modo in cui potevo farlo funzionare in passato era usare un layout piatto per i progetti, in cui il modulo genitore era un peer per gli altri moduli. Questo ha funzionato bene con m2eclipse e Subversion.Eclipse + Maven + Git + Multi-Module projects = Unhappiness

Ora ci piacerebbe passare a Git e GitHub. Mi piacerebbe esporre l'intero progetto, insieme a tutti i moduli, come un singolo progetto su GitHub. Il problema è che EGit, il plugin Eclipse/Git, vuole gestire i progetti uno alla volta, non i gruppi di progetti, e quindi se hai un layout piatto, non puoi farlo.

La risposta corretta è utilizzare un layout gerarchico standard Maven e gestire il genitore e tutti i moduli come un'unità. Ma a Eclipse non piace, e nessuna quantità di giocherellando otterrà Eclipse per accettare progetti nidificati. m2Eclipse non supporta le gerarchie: https://issues.sonatype.org/browse/MNGECLIPSE-2291

Quindi cosa fai? Esegui Git dalla riga di comando e abbandoni la possibilità di vedere quali file sono stati modificati in Eclipse? Oppure abbandonare Eclipse?

risposta

12

Una struttura multi-modulo Maven standard come un singolo repo git funziona perfettamente per me in Eclipse Indigo con M2e e il plugin git che si presenta in quell'ambiente. Non puoi chiedere ad Eclipse di fare il tuo recupero per te, ma una volta estratto dalla riga di comando, usi Team/Condividi, dì 'Git!' e tutto va bene.

Penso di vedere qual è la fonte: la gerarchia è un problema per i progetti all'interno dell'area di lavoro, non "progetti esistenti" che si importano.

Ecco un tipico flusso di lavoro:

  1. uso git svn clone per ottenere un albero. è un albero multiruolo gerarchico mvn di serie
  2. in eclissi, usa il progetto di importazione/maven/esistente. Punto in tutto l'albero
  3. selezionare tutto
  4. OK

funziona benissimo. L'annidamento non disturba l'eclissi di un bit. Non so quale problema bz sta indicando.

Prima di utilizzare m2e, ho utilizzato il plugin maven-eclipse. E ha funzionato anche in questi casi, perché non genera un .project/.classpath per <packaging>pom</packaging> aggregando i progetti, quindi Eclipse non viene mai chiamato per annidare effettivamente qualcosa.

Io non sono solo: guarda le istruzioni di installazione dello sviluppatore come cxf.apache.org per un esempio open source che puoi provare tu stesso.

+0

È il vostro struttura gerarchica o appartamento? – ccleve

+0

gerarchico è quello che ho. – bmargulies

+0

Come hai ottenuto Eclipse per gestire un layout gerarchico? Non posso compilarlo. Secondo https://bugs.eclipse.org/bugs/show_bug.cgi?id=245412 Eclipse non li supporta ancora. – ccleve

1

È possibile inserire i moduli in Git con layout gerarchico. E costruisci quei moduli di Maven. Se questi moduli sono progetti (qualunque sia il progetto java, C++ o php) riconosciuti da Eclipse, possono essere importati nello spazio di lavoro come layout piatto nell'area di lavoro.

-- 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

Come? Se sono organizzati fisicamente sul disco in modo gerarchico, come li importano in modo piatto? – ccleve

+0

L'area di lavoro non interessa dove si trova il progetto (potrebbe trovarsi nell'area di lavoro o in qualsiasi punto del disco). Ogni progetto ha solo un file .project nella cartella root, Eclipse potrebbe importarlo nello spazio di lavoro senza copiarlo nello spazio di lavoro. Vedi la mia risposta aggiornata. – Kane

4

È possibile che si stia lavorando con versioni precedenti dello strumento?

Ho un progetto multi-modulo Maven con cui lavoro utilizzando Eclipse 3.7 (Indigo), M2Eclipse (1.0) ed EGit (1.0).

Sul file system il progetto multi-modulo ha una singola directory principale.

In Eclipse ho progetti separati per ogni modulo.

M2Eclipse esegue perfettamente la gestione delle dipendenze.

C'è un singolo repository git (directory .git) al primo livello e EGit funziona perfettamente.

+0

+1 perché stavo usando vecchie versioni e tutto è cambiato quando ho aggiornato. – ccleve

+1

"In Eclipse ho progetti separati per ogni modulo." Per chi si chiede, il file system è una gerarchia funzionante, ma m2eclipse non ti permetterà ancora di gestire un modulo genitore/figlio come una singola gerarchia di progetto. Ogni modulo per m2eclipse deve avere un progetto in Eclipse oppure Eclipse non troverà tipi di classi o relazioni tra di loro. –

0

Per i progetti Maven, è possibile ottenere più importazioni contemporaneamente tramite il wizard di importazione Maven (accessibile da Git). Se non sai che tipo di progetti stai per importare, puoi utilizzare il nuovo Easymport che importerà il progetto "come meglio", deducendo le configurazioni da vari file. Vedi https://github.com/jbosstools/jbosstools-playground#easymport-easy-and-smart-openimport-of-a-project

Una volta arrivati ​​tutti quei progetti, è possibile utilizzare il plugin Nestor, che mostrerà progetto in un layout nidificato/gerarchica, la mappatura più correttamente il progetto Maven: https://github.com/jbosstools/jbosstools-playground#nestor-view-nested-projects