2011-07-23 13 views
14

Lo siento por ser prolijo ...proyecto Maven en Eclipse - ensamblaje implementación falla construir

Tengo algunos proyectos de Maven existentes. Los importé en Eclipse usando Maven -> Importar proyectos existentes de Maven.

Esto me dio 6 proyectos individuales y un proyecto que enumera los 6 debajo de él. (El proyecto paraguas tiene 6 módulos definidos que se traducen en 6 proyectos de eclipse, como entiendo cómo funciona maven)

Uno de los proyectos A requiere otros dos proyectos B y C (en tiempo de compilación y tiempo de ejecución).

Ruta de compilación - En la ruta de compilación de A, tengo una de las bibliotecas como dependencias de Maven. Y construye bien.

Ensamblaje de implementación - En el ensamblaje de implementación de A, sin embargo, no hay entrada para implementar en web-inf/lib. Por eso, cuando tomcat se inicia no encuentra los archivos necesarios ni los proyectos B y C. Así que agregué una entrada al ensamblaje de implementación como: fuente - maven Y las dependencias se implementan - web-inf/lib. Aparece Tomcat y aparece mi aplicación web para el proyecto A.

Sin embargo, esto rompe la acumulación Eclipse - sobre la acumulación del eclipse se queja: "ruta de clase no válida publicar entradas proyecto de exportación no compatible"

Esto lo vemos es porque, en virtud de la ruta de compilación, no es nueva entrada añadida a la web -inf/lib para publicar/exportar bajo las dependencias-maven. Al eliminar eso también se elimina la entrada de maven del ensamblaje de despliegue.

La única solución es que en el ensamblaje de implementación especifico el web-inf/lib bajo el objetivo generado por maven pero que hace que las copias obsoletas del proyecto B y C sean recogidas.

Por qué necesito esta configuración es porque cuando realizo cambios en el proyecto B y C en Eclipse y los construyo en Eclipse, quiero ver los cambios cuando estoy depurando el proyecto A. No quiero ejecutar compilaciones maven en B y C nuevamente ya que consume mucho tiempo.

Cualquier ayuda es muy apreciada.

Intenté incluir el MAVEN2_CLASSPATH_CONTAINER pero siempre está vacío y cuando tomcat se ejecuta no puede encontrar las bibliotecas necesarias. (¿A qué vale el MAVEN2_CLASSPATH_CONTATINER establecido en?)

Esto está en Eclipse Indigo Mac OSX.

+0

Sí, me gustaría ayudar, pero el texto no se puede leer. –

Respuesta

1

Para cualquier otra persona que busca para esto, parece que también se puede añadir manualmente el siguiente al archivo .classpath

<classpathentry combineaccessrules="false" kind="src" path="/B"/> 
34

Debe agregar los proyectos relevantes a su Ensamblaje de implementación.

Haga clic derecho Proyecto -> Propiedades -> Asamblea Despliegue -> Añadir

+2

Esta es una solución mucho mejor que la respuesta aceptada. – SoWeLie

+0

Acepto que esto soluciona la solución del error publicado, pero no resuelve el error que lo acompaña, ya que el proyecto todavía se está extrayendo de Ivy. ("El proyecto contiene otra dependencia con el mismo nombre de archivo"). – Marcus

+1

también me enfrenté a este problema hoy, sin embargo, mi ensamblaje de implementación tiene esos subproyectos/módulos incluidos. Para resolver esto primero, eliminé todos los subproyectos/módulos y los agregué nuevamente al ensamblaje de implementación. – PushkarT

5

lo descubrió ..pero no del todo ...

por lo que añade experto dependencia en el montaje de despliegue como he mencionado más temprano.

Maven dependency -> WEB-INF/lib 

Y, además, añade el proyecto B y C así:

B -> WEB-INF/lib and C->WEB-INF/lib 

De alguna manera esta forma B y C no se agregan a la exportación publicar/en el camino de construcción Java. No sé cómo el eclipse sabe que no se exportan B y C desde el repositorio maven, sino que se exporta desde el proyecto B y C en sí.

eso es todas formas por algún otro día .. por ahora im feliz :)

0

Tuve este problema, pero creo que ninguna de estas respuestas soluciona el problema correctamente. En su lugar, trabajan en torno a m2eclipse (que debe administrar los classpaths y el ensamblado de implementación para usted). Para mí, el problema que estaba usando m2eclipse sin m2eclipse-wtp (un plugin separado).

Consulte this SO answer para conocer los detalles del plug-in.

0

Se pueden añadir los proyectos pertinentes/o entrada de trayectoria de la estructura experto en java si se utiliza Maven para el ensamblado de implementación (proyecto -> propiedades -> Asamblea despliegue)

A continuación, comprueba si las tesis relevante del proyecto son facetas compatibles. (proyecto -> Project Facets)

0

Al incluir las dependencias de Maven, está incluyendo las dependencias para el proyecto B y el proyecto C. Resulta que también debe incluir los proyectos B y C manualmente.

La solución exacta que funciona es. proyecto A -> propiedades -> Implementación Ensamblaje

Haga clic en Agregar y luego en Proyecto. Seleccione B y C. El problema se solucionará después de la reconstrucción.

7

Solucioné haciendo esto:

haga clic derecho en mi Eclipse Proyecto-> Maven -> Configuración de la actualización del Proyecto ...

+1

La configuración del proyecto de actualización realmente elimina la advertencia ... pero también elimina las entradas del proyecto del descriptor de implementación :( –

+0

sí, tiene razón. Todavía no tengo una solución – Alv21

0

Este error puede producirse si tiene varias entradas de mismo frasco en que la clase camino. Por lo tanto, debe verificar su classpath y eliminar las entradas duplicadas.

Cuestiones relacionadas