Author Topic: Maven y eclipse, varios proyectos  (Read 11200 times)

lsri8088

  • Newbie
  • *
  • Posts: 7
  • Karma: 0
    • View Profile
Maven y eclipse, varios proyectos
« on: Junio 21, 2011, 02:59:53 pm »
Hola,

O estoy haciendo algo mal, o no hay solución por ello no encuentro nada en Internet.

Tengo eclipse y maven. Cada uno de mis proyectos maven lo divide en 4 carpetas: el padre, el ear, el ejb, y el war.
Lo que no me gusta, y es un incordio, es que en eclipse aparecen las 4 carpetas como 4 proyectos. Para colmo de males, el proyecto padre incluye los otros 4.

¿Se puede poner en en Eclipse como un solo proyecto?

Eclipse Helios, plugin m2eclipse
Maven 3.0.3

Saludos y gracias

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5468
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Maven y eclipse, varios proyectos
« Reply #1 on: Junio 21, 2011, 03:14:25 pm »
Bueno, olvídate de maven y contesta a lo siguiente. ¿Podrías montarlo manualmente en eclipse para que sea un solo proyecto? Lo veo complicado con lo que comentas (un ear, un war y un ejb por separado).

En cuanto al proyecto padre. Si el proyecto padre tiene un pom.xml y dentro de ese pom.xml se indican los <module> de los proyectos hijos que son subidrectorios y pones <packaging>pom</packaging>, al hacer mvn eclipse:eclipse en el proyecto padre debería generarte automáticamente los de los hijos y no debería aparecer el padre como proyecto.

Code: [Select]
<project>
   ...
   <packaging>pom</packaging>
   ....
   <modules>
      <module>subdirectorio_subproyecto1</module>
      <module>subdirectorio_subproyecto2</module>
      ....
   </modules>

Si además en los pom.xml de los subproyectos pones las dependency adecuadas de los otros subproyectos y ejecutas mvn eclipse:eclispe desde el proyecto padre y no desde los proyectos hijos, en eclipse aparecerán tres proyectos (el padre no), pero con las dependencias entre ellos bien montadas (dependencias entre proyectos, no entre jars)

Se bueno.

lsri8088

  • Newbie
  • *
  • Posts: 7
  • Karma: 0
    • View Profile
Re: Maven y eclipse, varios proyectos
« Reply #2 on: Junio 21, 2011, 05:38:43 pm »
Hola chuidiang, gracias por responder, y tan rapido!  :o

Pues tengo eso del package en el pom padre, y cero que las dependencias entre subcarpetas es correcta.
Pero en el eclipse simpre me mete las 4 carpetas, cada una como un proyecto.

Lo que si puedo hacer, es o bien seleccionar solo los pom hijos, a la hora de importar a eclipse, o bien cerrar despues el proyecto padre.

No entiendo porque la integracion con eclipse no crea un solo proyecto... si realmente es todo uno. Por separado no te sirven de nada.

Un saludo.

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5468
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Maven y eclipse, varios proyectos
« Reply #3 on: Junio 21, 2011, 05:57:20 pm »
Debes tener algo raro. Yo trabajo normalmente con proyectos jar (no uso war, ear ni similares), no sé si puede haber alguna diferencia.

El caso es que tengo una estructura maven bastante compleja de proyectos con suproyectos que a su vez tienen subproyectos debajo, en varios niveles. Si me voy al proyecto padre del todo y ejecuto mvn eclipse:eclipse, maven recorre toda la estructura y sólo genera proyectos eclipse para los proyectos "hojas" de esa estructura de proyectos y eclipse sólo me importa dichos proyectos, no los padres. Al importar en eclipse desde el padre, me aparecen sólo los proyectos "hoja".

En tu proyecto, asegúrate de borrar los .project, .classpath y demás del proyecto padre e intenta hacer otra vez mvn eclipse:eclipse, no sea que se haya quedado de antes. Prueba si quieres también mvn eclipse:clean, que borra esos ficheros (ojo si no quieres perderlos).

En cuanto a que es sólo un proyecto... ¿por qué dices que es un solo proyecto?. Quizas concepturalmente desde tu punto humano de vista sí lo sea, pero por la estructrura de directorios que has montado maven no lo ve así. Cada estructura es un proyecto y maven sólo genera un artifact por proyecto (el war, el ear, etc). Si quieres que maven lo vea como un solo proyecto, tendrás que generarlo como un solo proyecto (todo en una misma estructura de directorios con un único pom.xml).

Se bueno.

lsri8088

  • Newbie
  • *
  • Posts: 7
  • Karma: 0
    • View Profile
Re: Maven y eclipse, varios proyectos
« Reply #4 on: Junio 21, 2011, 07:25:54 pm »
Cuando importo el proyecto sale este WARN en la consola de maven:

 [WARN] The POM for org.mvel:mvel:jar:1.3.1-java1.4 is missing, no dependency information available

Y, seleccionando solo el pom del padre, me queda así: [ver imagen adjunta]

Como ves, no salen los paquetes de java (los miro en  Package Explorer)

Saludos.
« Last Edit: Junio 21, 2011, 07:35:02 pm by lsri8088 »

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5468
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Maven y eclipse, varios proyectos
« Reply #5 on: Junio 21, 2011, 09:52:09 pm »
creo que no me entero. ¿qué es la consola de maven? cuando importas el proyecto ¿en eclipse? ¿cómo lo importas?

Yo normalmente creo el proyecto con línea de comandos

mvn archetype:create .....

modifico los pom.xml con notepad o lo que sea para añadir dependencias. Luego ejecuto desde línea de comandos en el proyecto padre

mvn eclipse:eclipse

y finalmente, desde eclipse, "archivo"->"import" -> "general" -> "existing project into workspace". Desde luego, me salen proyectos sueltos (las hojas que mencionaba antes) y no me sale esa estructura de directorios en el que veo todo junto.

Se bueno.

lsri8088

  • Newbie
  • *
  • Posts: 7
  • Karma: 0
    • View Profile
Re: Maven y eclipse, varios proyectos
« Reply #6 on: Junio 22, 2011, 03:19:08 am »
chuidiang, como dijo Jack, por partes ...

Respecto a tu ultimo comentario ("no me sale esa estructura de directorios en el que veo todo junto"), creo que te refieres al grupo de proyectos:
En eclipse, en el PAckage Explore puedes crear grupos (set) a los cuales asignar uno o varios proyectos, incluso un mismo proyecto puede estar en mas de grupo. A parte de verlo todo mas organizado, tambien te valen estos grupos para hacer luego una búsqueda en todo el grupo, o cerrar y abrir todo el grupo, por ejemplo.
(si ya sabias esto, pues... queda para el que venga detras  ;) )

Yo no he creado el proyecto maven desde cero, pues ya estaba creado con la tipica estrutura de proyecto J2EE para su compilacion con ANT. Asi que, partiendo de una "plantilla", estructura de archivos, creo que tipica de Maven por lo que he visto, hemos "mavenizado" los proyectos, es decir, pasarlos fuentes y demas archivos de la estructura J2EE a la maven. Todo a manita  :'(
Por esto no he podido crear el proyecto con "archetype:create". Además, creo que no existe plantilla para un proyecto de estas caracteristicas (ear + ejb + war).

En cuanto al resto, sí. Una vez creada la estrucutra de archivos con los pom configurados y de mas, ejecuto el mvn eclipse:eclipse, en el padre, y luego importo al eclipse. Aqui he probado dos tipos de importacion:
A) La que indicas, como cualquier otro proyecto.
B) Y usando el plugin m2eclipse, con el cual puedo indicar explicitamente, importar un proyecto maven, y me detecta los pom (padre e hijos) pudiendo seleccionar cuales quiero importar.

Si hago la opción A, me deja un solo proyecto, el padre que contiene a su vez una carpeta por hijo. Pero en los hijos, los fuentes (.java) del proyecto no aparecen como "paquetes" (com.kuku.utils...), y no me aparece la opcion de "Build classpath" para poder indicar que carpeta contiene las fuentes.

Con la opcion B, me importa 4 proyectos:
- el padre, que contiene a su vez una carpeta por hijo
- y uno por hijo, donde ahora si salen la carpeta "fuente" y con sus "paquetes" y demás. Y en cada uno de estos proyectos puedo configurar el classpath etc.

Te pongo un ejemplo con cada opción, y resumo un poco:

Importancion general:
   miProyecto-padre
        |-- miProyecto-ear
                 |-- pom.xml
        |-- miProyecto-ejb
                 |-- pom.xml
        |-- miProyecto-war
                 |-- pom.xml
        |-- pom.xml (del padre)
        |-- src
"src", es la carpeta que ves en la imagen, contiene la estructura src/main/..., con archivos de confifuracion, filtros, comunes a todos los hijos

Cada uno de los hijos, eclipse lo ve como una simple carpeta, no detecta los fuentes, los .java, por lo que no crea una "carpeta de fuentes.


Importacion con el plugin m2eclipse:
   miProyecto-padre
        |-- pom.xml (del padre)
        |-- src
        |-- miProyecto-ear
        |-- miProyecto-ejb
        |-- miProyecto-war

    miProyecto-ear
       |-- pom.xml
   
    miProyecto-ejb
        |-- pom.xml
   
    miProyecto-war
        |-- pom.xml

Aqui cada uno de los proyectos es un proyecto (valga la redundancia) dentro de elclipse, con su carpeta de fuentes, excepto el "padre", que es igual que en la otra importacion.



No se si sera problema del plugin, a lo mejor era mejor no usarlo  :-\, o los pom no están debidamente configurados, o la estructura de archivos no es la adecuada. Ni idea  :'(
El proyecto compila bien y crea bien los archivos finales (.ear en mi caso).
Lo que me fastidia es tener tanto proyecto en el eclipse y para colmo archivos duplicados (el padre contiene los hijos).

Con lo bien que estaba con mi querido ant  :'( :'(

lsri8088

  • Newbie
  • *
  • Posts: 7
  • Karma: 0
    • View Profile
Re: Maven y eclipse, varios proyectos
« Reply #7 on: Junio 27, 2011, 09:31:04 pm »
Con esta estructura de archivos:
  miProyecto-padre
        |-- miProyecto-ear
                 |-- pom.xml
        |-- miProyecto-ejb
                 |-- pom.xml
        |-- miProyecto-war
                 |-- pom.xml
        |-- pom.xml (del padre)
        |-- src

¿¿ cuando ejecuto mvn eclipse:eclipse, tiene que crear los archivos del eclipse colgando de "miProyecto-padre", o solo dentro de los hijos ??

Saludos.

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5468
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Maven y eclipse, varios proyectos
« Reply #8 on: Junio 27, 2011, 11:08:05 pm »
debería crear sólo los de los hijos.

lsri8088

  • Newbie
  • *
  • Posts: 7
  • Karma: 0
    • View Profile
Re: Maven y eclipse, varios proyectos
« Reply #9 on: Junio 28, 2011, 01:45:30 am »
debería crear sólo los de los hijos.

¿Y en el eclipse importar solo el padre (miProyecto-padre)? Sin usar el plugin, es decir, como cualquier otro proyecto.

¿Puedes adjuntar un pom.xml padre y otro hijo?

Tambien me vale un enlace que explique esto.

 :'(

Gracias y un saludo.

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5468
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Maven y eclipse, varios proyectos
« Reply #10 on: Junio 28, 2011, 02:42:02 am »
mvn eclipse:eclipse crea los ficheros de eclipse, por lo que eclipse es capaz de importarlos sin necesidad de plugin.
Unicamente, los proyectos generados por maven hacen referencia a una variable M2_REPO que debes definir manualmente una sola vez en tu workspace de eclipse. Esa variable debe apuntar al directorio donde está tu .m2/repository. En el menú seleccionamos Window > Preferences. Luego Java > Build Path > Classpath Variables y ahi definimos M2_REPO apuntando a C:\Documents and Settings\usuario\.m2 (o lo que tú tengas). Por aquí tienes algo más http://chuidiang.org/content/integraci%C3%B3n-de-maven-con-eclipse

El pom.xml padre debe tener <packaging>pom</packaging> en vez de jar, ear o war y llevar los <modules> correspondientes (me dijiste que ya lo tenías así).
Los pom.xml hijos deben llevar un <parent> indicando el padre. Echa en http://chuwiki.chuidiang.org/index.php?title=Herencia_y_composici%C3%B3n_de_proyectos un ojo a la parte de "herencia de proyectos". Fíjate también que el nombre del subdirectorio hijo es el que aparece en <modules> del padre. Si haces coincidir los nombres de los artifact con los nombres de los subdirectorios es más fácil.

Se bueno.

lsri8088

  • Newbie
  • *
  • Posts: 7
  • Karma: 0
    • View Profile
Re: Maven y eclipse, varios proyectos
« Reply #11 on: Junio 28, 2011, 02:02:32 pm »
Hola,

Todo eso lo tengo bien, pero el valor de artifactId y name del pom padre no se corresponden con el nombre de la carpeta:
nombre de la carpeta: miProyecto
artifactId: miProyecto-parent
name: miProyecto-Parent (sí, con la P en mayusculas)

¿Eso puede afectar?

Saludos.

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5468
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Maven y eclipse, varios proyectos
« Reply #12 on: Junio 28, 2011, 05:34:40 pm »
No debería, sólo tienes que tener cuidado. <module> es el nombre de las carpetas de los proyectos hijos. <artifact> son los nombres del artifact. El nombre de la carpeta del proyecto padre da igual, no aparece por ningún lado.

puedes probar con mvn archetype:generate

creas el padre con mvn archetype:generate eligiendo proyecto pom-root (sale un menú para que elijas). Luego te metes dentro del directorio creado y ejecutas mvn archetype:generate tantas veces como proyectos hijos quieras, eligiendo para cada uno de ellos el tipo de proyecto que quieras (war, ear, etc, etc). No hace falta que muevas todos los fuentes y tal, simplemente crea los proyectos de los tipos adecuados aunque sean vacíos. Luego prueba el mvn eclipse:eclipse desde arriba a ver si lo hace bien.

Se bueno.
« Last Edit: Junio 28, 2011, 05:37:51 pm by chuidiang »

 

ey