2013-02-06 16 views
12

Ho un'applicazione web che è strutturato in questo modo:WTP - M2E non distribuire le dipendenze transitive

A.jar -> B.war -> C.war

Sono utilizzando Eclipse Juno e la versione WTP è 1.1. A.jar è un progetto di utilità di lavoro che viene incluso da B.war. B.war è un progetto di guerra che è incluso da C.war come overlay. Ecco the way che sto facendo che:

<dependency> 
    <groupId>com.projects</groupId> 
    <artifactId>B</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <type>war</type> 
    <scope>runtime</scope> 
</dependency> 

Dopo di che, ho distribuire il progetto C al server Tomcat. Funziona come un incantesimo se distribuisco manualmente la guerra generata da Maven al Tomcat, perché A.jar è incluso in WEB-INF/lib. Tuttavia il mio problema arriva quando lascio il m2e-wtp fare la deploy, perché sta facendo l'overlay correttamente ma non includendo la dipendenza A transitive. Ho provato a includerlo come un pom, mentre leggo da qualche parte qui intorno, ma ho lo stesso risultato.

<dependency> 
    <groupId>com.projects</groupId> 
    <artifactId>B</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <type>war</type> 
    <scope>runtime</scope> 
</dependency> 

<dependency> 
    <groupId>com.projects</groupId> 
    <artifactId>B</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <type>pom</type> 
</dependency> 

sto utilizzando le versioni più recenti di M2E (1.2) e M2E-WTP (0.16) e hanno i miei progetti aggiornati con la configurazione Maven.

È un problema di m2e-wtp o semplicemente devo organizzare il mio progetto in altro modo?


a cura

ho notato configurazione M2E-WTP è memorizzato in project./settings/org.eclipse.wst.common.component di file di Eclipse. Ecco come appare per la mia guerra:

<dependent-module deploy-path="/" 
    handle="module:/overlay/prj/B?includes=**/**&amp;excludes=META-INF/MANIFEST.MF"> 
    <dependency-type>consumes</dependency-type> 
</dependent-module> 
<dependent-module deploy-path="/" 
    handle="module:/overlay/slf/?includes=**/**&amp;excludes=META-INF/MANIFEST.MF"> 
    <dependency-type>consumes</dependency-type> 
</dependent-module> 

Come posso vedere la dipendenza guerra è fissata per consumano mentre le dipendenze vaso sono impostati per uso.

Rilasciato m2e-wtp versione 0.17 non sembra risolverlo.


EDITED (2013-08-30)

Oggi ero di nuovo allo stesso problema. Anche io ho Ecepse kepler installato con il latest stable release of WTP fuori dalla scatola, questo problema sembra persistere. Ho pensato che fosse risolto, ma a quanto pare ho sbagliato controllo ...

+0

Sì. Ancora visto il problema con m2e-wtp - Maven Integration per WTP (Incubation) versione 0.17.0.20130212. –

risposta

5

Penso che non sia un problema dell'organizzazione del tuo progetto. Il tuo problema è molto simile a questo m2e-wtp bug report.

+2

m2e è un testamento di come l'open source ha ottenuto il nome di piaghe aperte ... – Rob

+0

Mi aspettavo un altro tipo di risposta, ma ho il bug del plugin. Ti meriti la generosità a causa del link ad essa. –

+0

bug è stato corretto in data 15/03/2015. Ho provato lo snapshot m2e-wtp da http://download.eclipse.org/m2e-wtp/snapshots/mars/ – cthiebaud

1

Sembra un problema Eclipse Juno e WTP Plugin.

Ho avuto lo stesso problema e ho risolto in questo modo:

  1. Backup spazio di lavoro Eclipse e il tuo codice di progetto
  2. rimuovere il progetto da Eclipse (senza rimuovere il contenuto)
  3. aperto un terminale di comando (cmd)
  4. conduzione mvn eclisse: pulito
  5. conduzione mvn eclisse: eclipse -Dwt pversion = 2.0
  6. Modificare il file eclissi percorso di classe con un editor di testo:.% project_path% \ classpath
  7. rimuovere tutte le linee con l'attributo tipo = "var" dal vostro .classpath file. Ad esempio:

    < classpathentry tipo = path "var" = "M2_REPO/javax/servlet/servlet-api/2,5/servlet-api-2.5.jar" sourcepath = "M2_REPO/javax/servlet/servlet- api/2.5/servlet-api-2.5-sources.jar "/>

  8. salvare il file & chiudere l'editor.
  9. in Eclipse, clicca su: file-> Importa ...-> Maven-> Importa progetto Maven esistente e importare il progetto di nuovo
  10. Maven -> Progetto di aggiornamento (se si vuole)
Si potrebbe vedere su l'assembly di distribuzione nelle proprietà del progetto eclipse che il problema è risolto e le dipendenze Maven sono presenti.

Spero che questo aiuti.

+0

Ho ancora bisogno di provare la tua soluzione, cosa faccio è solo includere la dipendenza transitiva a seconda del profilo. Comunque, muchas gracias. –

1

Ho anche questo problema. Ho una brutta soluzione:

Put all tutte le dipendenze della guerra originale in un progetto separato (tipo jar) e fare in modo che sia la guerra originale che la guerra di sovrapposizione dipendano da quello. Così, per l'esempio:

A.jar -> B.war -> C.war

diventa

A.jar -> (nuovo modulo B-dependencies.jar chiamato B -dependencies creato)

B-dependencies.jar -> B.war

B-dependencies.jar -> C.wa r

Si noti che non è specifico per Tomcat; Sto usando JBoss.

+0

Sì, è esattamente quello che faccio. Inoltre, includo B-dependencies.jar in base al profilo (lo uso con il profilo eclipse e non con quello di produzione, poiché il problema è relativo a eclipse). Ho cambiato il titolo della domanda per non correlarlo a Tomcat ;-) –

+0

Il fondatore di m2e-wtp ha [una soluzione simile] (https://bugs.eclipse.org/bugs/show_bug.cgi?id=398138#c6) che non è lavorando per me. Non completamente risolto alla 1.0.1 ancora. –

Problemi correlati