2010-11-25 9 views
6

Ho appena installato una nuova installazione di Eclipse Helios e ho configurato M2Eclipse per utilizzare un'installazione esterna (v 2.2.1) di Maven.Perché M2Eclipse si lamenta di un artefatto mancante quando la riga di comando mvn non lo fa?

Il sistema compila bene sulla linea di comando, ma dall'interno m2eclipse molti dei miei moduli del progetto sono un errore:

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

posso andare oltre l'errore escludendo la JMS manufatto dalle dipendenze Atomikos . Ma la mia domanda principale è come possono i due fornire risultati diversi!

Ancora più strano è che ho un'altra installazione di Eclipse Helios e tutto funziona correttamente.

risposta

5

Il resolver di dipendenza in m2eclipse non sta utilizzando l'installazione esterna di Maven, deve utilizzare la versione di Maven incorporata. Pertanto, consiglierei di scaricare l'ultima versione di m2eclipse e la versione 3.x di Maven per ridurre al minimo la differenza nella risoluzione delle dipendenze.

+0

Quindi M2Eclipse sta già utilizzando M3 internamente? Sembra un po 'spaventoso che M2 e M3 forniscano risoluzioni di dipendenza diverse ... anche se solo su 1 artefatto su centinaia. Grazie per il consiglio. – HDave

+2

Il problema è che il nucleo di Maven 2.x non è realmente integrabile. Maven 3.x incorpora molte modifiche per far funzionare i componenti interni all'interno dell'IDE. –

+0

Ho affrontato lo stesso problema, e sono stato in grado di aggirare il problema senza ottenere l'ultima versione di Maven. Invece, sono andato su Preferenze-> Maven-> Installazioni e ho compilato il campo "Impostazioni globali per l'installazione integrata" con /Users/myName/.m2/settings.xml ... questo ha funzionato per me perché ho un nesso locale server che serve alcune dipendenze di progetto che non sono disponibili pubblicamente. – pohl

3

Inoltre, è possibile che siano stati definiti alcuni repository alternativi nel file maven 2.2.1 conf/settings.xml. Se si utilizza il Maven3 incorporato, questi verranno ignorati.

È inoltre possibile specificare l'installazione di maven 2.2.1 come installazione di maven per m2eclipse.

+0

Come ho menzionato nel post originale, ho la mia installazione 2.2.1 configurata come installazione esterna per M2Eclipse. Il problema, secondo Kuleshov sopra è che M2Eclipse usa il suo Maven3 interno per risolvere comunque le dipendenze. – HDave

1

Stesso problema qui: io uso Maven 2.2.1 come l'installazione di utilizzare da Eclipse, in quanto è quello che lavora sulla linea di comando. Maven 3 non funziona per questo progetto concreto, lamentandosi di alcune dipendenze mancanti che, dopo molte ricerche, nel mio caso sono venute fuori da vecchi repository di maven 1 con layout legacy. Maven 3 odia questi e scoppierà a piangere quando li troverà.

Quindi Maven 2 funziona correttamente sulla riga di comando, ma Maven 3 non lo fa. Il problema con eclipse è che anche se si specifica maven 2 come installazione per creare i propri progetti, utilizza maven 3 (l'installazione integrata) per la risoluzione delle dipendenze, quindi se si è così sfortunati da richiedere un repository legacy si è fregati (intendo , Eclipse non aiuterà).

Problemi correlati