2011-10-20 23 views
12

Tenemos un proyecto de varios módulos usando Eclipse y Maven. La única forma en que podía hacer que funcionara en el pasado era usar un diseño plano para los proyectos, donde el módulo padre era igual que los otros módulos. Esto funcionó bien con m2eclipse y Subversion.Proyectos Eclipse + Maven + Git + Multi-Module = Infelicidad

Ahora nos gustaría pasar a Git y GitHub. Me gustaría exponer todo el proyecto, junto con todos los módulos, como un solo proyecto en GitHub. El problema es que EGit, el plugin de Eclipse/Git, quiere administrar proyectos de uno en uno, no grupos de proyectos, por lo que si tienes un diseño plano, no puedes hacerlo.

La respuesta correcta es usar un diseño jerárquico Maven estándar y administrar el padre y todos los módulos como una unidad. Pero a Eclipse no le gusta eso, y ninguna cantidad de manipulación hará que Eclipse acepte proyectos anidados. m2Eclipse no admite jerarquías: https://issues.sonatype.org/browse/MNGECLIPSE-2291

¿Qué haces? Haz Git desde la línea de comandos y abandona la posibilidad de ver qué archivos han cambiado en Eclipse. ¿O abandonar Eclipse?

Respuesta

12

Una estructura multi-módulo estándar de Maven como un único repositorio git funciona perfectamente bien para mí en Eclipse Indigo con M2e y el plugin git que se muestra en ese entorno. No puedes pedirle a Eclipse que te busque, pero una vez que salgas de la línea de comando, usas Team/Share, di 'Git!' y todo está bien.

Creo que veo cuál es la fuente: la jerarquía es un problema para los proyectos dentro del espacio de trabajo, no para los 'proyectos existentes' que importa.

Aquí hay un flujo de trabajo típico:

  1. uso git clone SVN para obtener un árbol. es un stock, árbol jerárquico mvn multi-módulo
  2. en eclipse, use el proyecto import/maven/existing maven. Punto en todo el árbol
  3. seleccionar todo
  4. OK

funciona bien. La anidación no molesta eclipse un bit. No sé a qué problema apunta bz.

Antes de usar m2e utilicé el plugin maven-eclipse. Y también funcionó en estos casos, porque no genera un .project/.classpath para los proyectos de agregación <packaging>pom</packaging>, por lo que nunca se pide a Eclipse que realmente anide nada.

No estoy solo: consulte las instrucciones de configuración del desarrollador como cxf.apache.org para obtener un ejemplo de código abierto que puede probar por usted mismo.

+0

Está su estructura jerárquica o plana? – ccleve

+0

jerárquico es lo que tengo. – bmargulies

+0

¿Cómo lograste que Eclipse manejara un diseño jerárquico? No puedo recopilar los míos. Según https://bugs.eclipse.org/bugs/show_bug.cgi?id=245412 Eclipse todavía no los admite. – ccleve

1

Puede colocar sus módulos en Git con un diseño jerárquico. Y crea esos módulos por Maven. Si esos módulos son proyectos (cualquiera que sea el proyecto java, C++ o php) reconocidos por Eclipse, se pueden importar al espacio de trabajo como diseño plano en el área de trabajo.

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

¿Cómo? Si están organizados físicamente en el disco de forma jerárquica, ¿cómo se importan planos? – ccleve

+0

Al área de trabajo no le importa dónde se ubica el proyecto (podría estar debajo del área de trabajo o en cualquier parte del disco). Cada proyecto solo tiene un archivo .project debajo de la carpeta raíz, Eclipse podría importarlo al área de trabajo sin copiarlo en el área de trabajo. Ver mi respuesta actualizada. – Kane

4

¿Es posible que esté trabajando con versiones anteriores de la herramienta?

Tengo un proyecto de varios módulos Maven con el que trabajo usando Eclipse 3.7 (Indigo), M2Eclipse (1.0) y EGit (1.0).

En el sistema de archivos, el proyecto de varios módulos tiene un solo directorio principal.

En Eclipse tengo proyectos separados para cada módulo.

M2Eclipse hace la gestión de la dependencia perfectamente.

Hay un único repositorio git (directorio .git) en el nivel superior y EGit funciona perfectamente.

+0

+1 porque estaba usando versiones antiguas, y todo cambió cuando actualicé. – ccleve

+1

"En Eclipse tengo proyectos separados para cada módulo". Para aquellos que se preguntan, el sistema de archivos es una jerarquía de trabajo, pero m2eclipse aún no le permitirá administrar un módulo principal/secundario como una jerarquía de proyecto único. Cada módulo para m2eclipse tiene que tener un proyecto en Eclipse o, de lo contrario, Eclipse no encontrará tipos de clases o relaciones entre ellos. –

0

Para los proyectos de Maven, se pueden realizar múltiples importaciones a la vez a través del asistente de importación de Maven (al que se puede acceder desde Git). En caso de que no sepa qué tipo de proyectos está a punto de importar, puede usar el nuevo Easymport que importará el proyecto "como mejor", deduciendo configuraciones de varios archivos. Ver https://github.com/jbosstools/jbosstools-playground#easymport-easy-and-smart-openimport-of-a-project

Una vez que todos estos proyectos, se puede utilizar el plugin Nestor, que se mostrará en un proyecto de disposición anidada/jerárquica, la cartografía más correctamente su proyecto Maven: https://github.com/jbosstools/jbosstools-playground#nestor-view-nested-projects

Cuestiones relacionadas