2013-05-31 10 views
6

Ho un caso angolare per Eclipse/Maven e "Risolvi le dipendenze dai progetti dell'area di lavoro". Il mio progetto ha un mix di codice scritto e codice generato, con il codice generato proveniente da una dipendenza che usa JAXWS.Eclipse/Maven e "Risolvi le dipendenze dai progetti dell'area di lavoro" non possono combinare i vasi e l'origine?

Il problema è che se controllo "risolvere le dipendenze", Eclipse/Maven ignora eventuali dipendenze JAR e cerca di risolvere tutto da solo guardando l'area di lavoro, che si traduce in Eclipse mostrando errori come "Pacchetto/Class not found" (relativo al codice generato) anche se il progetto si integra perfettamente con Maven dalla riga di comando.

D'altra parte, se deseleziono, risolve tutto solo guardando i JAR nel repository Maven. La seconda opzione generalmente funziona, ma quando faccio qualcosa come Ctrl-clic su una classe o variabile, ottengo l'Editor file di classe e "Origine non trovata", che non è molto utile. Inoltre, può andare fuori sincrono se modifico il codice nell'IDE ma dopo non eseguo "installazione di maven".

Suppongo che questo sia principalmente un inconveniente con Eclipse ma è fastidioso. Sto considerando di risolvere questo problema modificando le dipendenze Maven da compilare con source (o debug) ma non posso necessariamente farlo con tutto. L'opzione "Risolvi dipendenze" è pensata per funzionare esclusivamente in un modo o nell'altro come ho descritto?

risposta

3

Si potrebbe voler dare un'occhiata al plugin maven di build helper.

È possibile configurare in questo modo:

   <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>build-helper-maven-plugin</artifactId> 
       <version>1.5</version> 
       <executions> 
        <execution> 
         <id>add-source</id> 
         <phase>generate-sources</phase> 
         <goals> 
          <goal>add-source</goal> 
         </goals> 
         <configuration> 
          <sources> 
           <source>target/generated-sources</source> 
           <source>target/jaxws/wsimport/java</source> 
          </sources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

Questo dirà il vostro esperto di plugin di Eclipse per avere uno sguardo alle fonti generati e includerlo nel classpath del progetto.

È inoltre possibile aggiungere manualmente le origini generate al classpath in eclissi. (tasto destro del mouse sulla cartella generata -> aggiungi al percorso di creazione)

+0

Per coloro che non riescono a trovare l'opzione "aggiungi al percorso di creazione" nel proprio menu di scelta rapida per una cartella: nel mio caso (Eclipse Luna), si trova in 'Build Path' ->' Use as Source Folder'. –

0

Penso che dal momento che si desidera fare riferimento a file che esistono solo dopo una build, si forza in qualche modo l'esecuzione della generazione prima che siano necessari i riferimenti risolti. Puoi imbrogliare semplicemente creando una build da Eclipse. Ciò lascerebbe i file sorgente generati pronti a essere referenziati. Penso, tuttavia, che la filosofia di Maven ti porterebbe a spostare il codice generato in un altro artefatto maven interamente. Ciò ti consente di separare il ciclo di vita dei due gruppi di codice in modo che, quando sei pronto per utilizzare Eclipse per modificare il codice con codice a mano, i riferimenti alle classi generate siano risolti perché hai già generato quel codice nella build di un modulo separato, indipendente.

0

So che questo è un vecchio problema. Ma ho incontrato la stessa cosa in Juno con un plugin aggiornato "m2e-wtp". Quindi sto rispondendo esclusivamente per il beneficio degli altri lettori.

Questo stava accadendo solo in progetti di guerra. L'unica cosa risolta alla fine è stata la rimozione della cartella ".settings" nella cartella del progetto war e il riavvio di eclissi.

Problemi correlati