2011-07-23 20 views
14

Mi spiace essere verboso ...Progetto Maven in eclissi - l'assembly di distribuzione fallisce build

Ho alcuni progetti di esperti. Li ho importati in Eclipse usando Maven -> Importa progetti Maven esistenti.

Questo mi ha dato 6 singoli progetti e un progetto che elenca tutti e 6 sotto di esso. (Il progetto dell'ombrello ha 6 moduli definiti in esso e tradotto in 6 progetti eclipse - come ho capito come funziona maven)

Uno del progetto A richiede altri due progetti B e C (in fase di compilazione e in fase di esecuzione).

Percorso di generazione - Nel percorso di compilazione di A ho una delle librerie come dipendenze di Maven. E va bene.

Gruppo di distribuzione - Sul gruppo di distribuzione di A, tuttavia, non è disponibile una voce per la distribuzione su web-inf/lib. A causa di ciò, all'avvio di tomcat, non trova alcun jar richiesto o il progetto B e C. Così ho aggiunto una voce all'assembly di distribuzione come: source - maven E dependencies deploy - web-inf/lib. Tomcat si presenta e viene visualizzata la mia webapp per il progetto A.

Questo rompe però l'eclissi costruzione - della corporatura eclissi si lamenta: "percorso di classe non valido pubblicare voci di esportazione del progetto non supportato"

Questa vedo è perché, sotto percorso di generazione, non v'è nuova voce aggiunta al web -inf/lib per pubblicare/esportare sotto dipendenze Maven. La rimozione rimuove anche la voce di maven dal gruppo di distribuzione.

L'unica soluzione è che nell'assieme di implementazione viene specificato il valore web-inf/lib sotto il target generato da Maven, ma ciò causa la ripresa delle copie obsolete del progetto B e C.

Perché ho bisogno di questa impostazione è perché quando posso apportare modifiche al progetto B e C in Eclipse e costruire in Eclipse voglio vedere i cambiamenti quando io sono il debug del progetto A. Non voglio correre Maven costruisce su B e C ancora da quando consuma tempo.

Qualsiasi aiuto è molto apprezzato.

Ho provato a includere lo MAVEN2_CLASSPATH_CONTAINER ma è sempre vuoto e quando viene eseguito tomcat non riesce a trovare le librerie necessarie. (A quale valore corrisponde lo MAVEN2_CLASSPATH_CONTATINER

Questo è su Eclipse Indigo Mac OSX.

+0

Sì, mi piacerebbe aiutare ma il testo non è leggibile. –

risposta

1

Per chiunque altro che le ricerche per questo, sembra che è anche possibile aggiungere manualmente la seguente al file .classpath

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

È necessario aggiungere il/i progetto/i rilevante/i all'assembly di distribuzione.

Fare clic destro Progetto -> Proprietà -> Assemblea Distribuzione -> Aggiungi

+2

Questa è una soluzione molto migliore rispetto alla risposta accettata. – SoWeLie

+0

Sono d'accordo che questo risolve la soluzione dell'errore postato, ma non risolve l'errore di accompagnamento per me, dal momento che il progetto è ancora stato estratto da Ivy. ("Il progetto contiene un'altra dipendenza con lo stesso nome di archivio.") – Marcus

+1

Ho anche affrontato questo problema oggi, tuttavia il mio assembly di distribuzione ha quei sottoprogetti/moduli inclusi. Per risolvere questo problema, ho rimosso tutti i progetti/moduli secondari e li ho aggiunti di nuovo nell'assembly di distribuzione. – PushkarT

5

capito ..ma non del tutto ...

così ho aggiunto Maven dipendenza nell'assemblea distribuzione come ho già detto in precedenza.

Maven dependency -> WEB-INF/lib 

e inoltre aggiunto progetto B e C così:

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

In qualche modo questo modo B e C non vengono aggiunte alla esportazione publish/nel percorso di java build. Non so come Eclipse sappia non esportare B e C da Maven Repo ma esportarlo dal progetto B e C stesso.

thats Comunque per qualche altro giorno .. per ora im felice :)

0

Ho avuto questo problema, ma credo che nessuna di queste risposte risolva correttamente il problema. Invece risolvono m2eclipse (che dovrebbe gestire per te i percorsi di classe e l'assembly di distribuzione). Per me, il problema che stavo usando m2eclipse senza m2eclipse-wtp (un plugin separato).

Vedere this SO answer per i dettagli del plug-in.

0

È possibile aggiungere i progetti pertinenti/o esperto di java voce di percorso di generazione se si utilizza Maven alla vostra assemblea Deployment (progetto -> Proprietà -> Assemblea distribuzione)

Poi controlla se le tesi relativo progetto sono sfaccettature compatibili. (progetto -> Project Facets)

0

Includendo Dipendenze Maven, si includono le dipendenze per il progetto B e il progetto C. Si scopre che è necessario includere anche i progetti B e C manualmente.

La correzione esatta che funziona è. project A -> properties -> Deployment Assembly

Fare clic su Aggiungi e quindi su Progetto. Selezionare B e C. Il problema verrà risolto dopo la ricostruzione.

7

ho risolto solo facendo questo:

fare clic destro sul mio Eclipse Progetto-> Maven -> Aggiornamento configurazione del progetto ...

+1

La configurazione del progetto di aggiornamento rimuove effettivamente l'avviso ... ma rimuove anche le voci del progetto dal descrittore di implementazione :( –

+0

sì, hai ragione. Non ho ancora una soluzione – Alv21

0

Questo errore può verificarsi se si dispone di più voci dello stesso vaso in voi classe sentiero. Quindi è necessario controllare il classpath e rimuovere le voci duplicate.

Problemi correlati