2010-03-23 22 views
7

Trovo molto frustrante lo sviluppo web con Maven & Jetty che utilizza Eclipse, confronta con quello che ho fatto usando Visual Studio. Ogni volta che apporto una modifica, anche una piccola modifica nel mio file di visualizzazione, (* .jsp, ad esempio), devo ricomprare l'intero web -> aspettando che il molo ricarichi tutto prima che possa vedere la modifica.Sviluppo Web con Jetty & Maven

C'è un modo migliore per farlo, qualcosa come un plug-in automatico che selezionerà i file modificati e distribuirà i file modificati sul server web?

+0

Mi sono imbattuto in questo post, devo menzionare che una soluzione commerciale a questo problema è http://www.zeroturnaround.com/jrebel/. – Andy

risposta

13

Il modo in cui si utilizzano Maven, Jetty (ed Eclipse) insieme non è chiaro ma poiché la domanda è etichettata come Maven, coprirò il modo Maven. Con un progetto di tipo war, un modo semplice per far funzionare la webapp è utilizzare lo Maven Jetty Plugin. Per farlo, è sufficiente aggiungere il seguente frammento al POM:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>maven-jetty-plugin</artifactId> 
     <version>6.1.10</version> 
     </plugin> 
     ... 
    </plugins> 
    ... 
    </build> 
    ... 
</project> 

Con questa impostazione, in esecuzione mvn jetty:run inizierà un contenitore molo con la vostra applicazione distribuita. Qualsiasi modifica di una vista causerà la ricompilazione del JSP quando richiesto. E per configurare il pontile plugin per guardare anche per le modifiche del codice Java, dovrete aggiungere l'opzione scanIntervalSeconds:

scanIntervalSecondsopzionale. La pausa in secondi tra le sweep dell'app web per controllare le modifiche e la ridistribuzione automatica se ne viene rilevata una. Di default questo è 0, che disabilita la scansione di hot deployment. Un numero maggiore di 0 lo abilita.

Così la configurazione potrebbe essere simile:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>maven-jetty-plugin</artifactId> 
     <version>6.1.10</version> 
     <configuration> 
      <scanIntervalSeconds>1</scanIntervalSeconds> 
     </configuration> 
     </plugin> 
     ... 
    </plugins> 
    ... 
    </build> 
    ... 
</project> 

E se si vuole essere in grado di collegare un debugger remoto, dare un'occhiata a these instructions.

Ecco come ho sempre usato Jetty con Maven ed Eclipse, e sono sempre stato contento di questa configurazione. Non ho mai usato l'adattatore Jetty per il WTP, la configurazione precedente è semplicemente imbattibile.

+0

Hmm, sembra interessante. In realtà, stavo pensando a un plugin separato, qualcosa che può ri-invocare una fase di maven (come 'pacchetto') in risposta alle modifiche ai file. ScanIntervalSeconds è una bella opzione. Ma che dire di un altro plugin che avvia anche una diversa versione di jetty come Google App Engine (il plugin maven-gae, ad esempio) che non offre questa opzione? –

+0

@Phuong Sfortunatamente, non ho alcuna esperienza con il plugin gae quindi non posso dire molto a riguardo. –

+0

Trovo questo plug-in Eclipse FileSync: http://andrei.gmxhome.de/filesync/index.html che può essere utilizzato per copiare i file modificati nella cartella distribuita. Ci sto provando in questo momento, sembra promettente in quanto non dipenderà da ciò che il plug-in maven può offrire. –

0

Non ho usato Jetty con Eclipse, ma se usi Tomcat (e presumo che Jetty funzioni anche) con WTP e il plugin m2eclipse, Eclipse costruirà e pubblicherà la tua applicazione web ogni volta che una risorsa viene salvata.

  1. Creare (o utilizzare il progetto Maven esistente con l'imballaggio "di guerra".

  2. Nella vista "server" di Eclipse, fare clic con il tasto destro del mouse e configurare un server.

  3. Fare clic con il pulsante destro del mouse sul server configurato e selezionare "Aggiungi/Rimuovi progetti" e selezionare il progetto.

  4. Fare clic sul triangolo verde nella visualizzazione server per avviare il server.

Ora Eclipse dovrebbe auto-compilare e pubblicare l'applicazione Web ogni volta che apporti una modifica. Nota, per farlo funzionare devi avere il plugin m2eclipse E il plugin di integrazione per il m2eclipse WTP.

+0

@Will: nel progetto maven, le impostazioni memorizzate nel lato pom.xml verranno utilizzate per avviare il server (la porta, ad esempio, invocherà l'obiettivo mvn). Mi chiedo se sia possibile a modo tuo? –

Problemi correlati