2010-11-25 8 views
6

Acabo de configurar una nueva instalación de Eclipse Helios y he configurado M2Eclipse para usar una instalación externa (v 2.2.1) de Maven.¿Por qué M2Eclipse se queja de artefactos perdidos cuando la línea de comandos mvn no?

El sistema compila bien en la línea de comandos, sino desde dentro M2Eclipse varios de mis módulos del proyecto tienen un error:

Missing artifact javax.jms:jms:jar:1.1:test

que puede conseguir más allá del error al excluir el artefacto JMS de las dependencias atomikos . Pero mi pregunta principal es ¿cómo pueden los dos proporcionar resultados diferentes?

Aún más extraño es que tengo otra instalación de Eclipse Helios y todo funciona bien.

Respuesta

5

El resolvedor de dependencias en m2eclipse no utiliza la instalación Maven externa, tiene que usar la versión incrustada de Maven. Por lo tanto, recomendaría obtener la última versión de m2eclipse, así como la versión de Maven 3.x para minimizar la diferencia en la resolución de la dependencia.

+0

¿Entonces M2Eclipse ya está usando M3 internamente? Sin embargo, parece un poco aterrador que M2 y M3 brinden diferentes resoluciones de dependencia ... aunque solo en 1 artefacto de cientos. Gracias por el consejo. – HDave

+2

El problema es que el núcleo de Maven 2.x no es realmente incrustable. Maven 3.x incorpora muchos cambios para que los componentes internos funcionen dentro de IDE. –

+0

Me enfrenté al mismo problema, y ​​pude solucionarlo sin obtener la última versión de maven. En su lugar, fui a Preferencias-> Maven-> Instalaciones y llené el campo marcado "Configuración global para instalación incrustada" con /Users/myName/.m2/settings.xml ... esto funcionó para mí porque tengo un nexo local servidor que sirve algunas dependencias de proyecto que no están disponibles públicamente. – pohl

3

Además, es posible que haya algunos repositorios alternativos definidos en su archivo maven 2.2.1 conf/settings.xml. Si usa el maven3 incrustado, estos serán ignorados.

También puede especificar su instalación de maven 2.2.1 como la instalación de maven para m2eclipse.

+0

Como mencioné en la publicación original, tengo mi instalación 2.2.1 configurada como la instalación externa para M2Eclipse. El problema, según Kuleshov arriba, es que M2Eclipse usa su Maven3 interno para resolver dependencias de todos modos. – HDave

1

mismo problema aquí: Consumo experto 2.2.1 como la instalación de usar desde eclipse, ya que es el que trabaja en la línea de comandos. Maven 3 no trabaja para este proyecto concreto, quejándose de algunas dependencias faltantes que, después de mucha investigación, en mi caso resultaron ser de viejos repositorios de maven 1 con diseño heredado. Maven 3 los odia y estallará en llanto cuando los encuentre.

Así que maven 2 funciona bien en la línea de comandos, pero maven 3 no. El problema con Eclipse es que incluso si especifica maven 2 como instalación para construir sus proyectos, utiliza maven 3 (la instalación integrada) para la resolución de la dependencia, por lo que si tiene la mala suerte de necesitar un repositorio heredado, está equivocado (me refiero , eclipse no ayudará).

Cuestiones relacionadas