Desidero poter distribuire le modifiche al codice in Tomcat (vicino all'istante), mentre sto sviluppando in Eclipse.Tomcat ed Eclipse Zero Turnaround Deployment
Finora, ho il mio output da Eclipse posizionando le classi costruite nella cartella WEB-INF/classes
della mia applicazione web.
Ho anche un contesto ricaricabile, con web.xml
come risorsa guardata. Qualsiasi modifica/salvataggio in questo file fa ricarica la mia app Web, impiegando poco più di un secondo, molto più rapidamente della creazione di un nuovo file di guerra e della sua distribuzione completa.
Tuttavia, ciò che mi piacerebbe fare è attivare la ridistribuzione quando modifico qualsiasi file sorgente. Poiché i file .class sono stati modificati in Tomcat, sembra che sia necessario monitorare tutte le modifiche nella cartella WEB-INF/classes
e sono bambini.
Ho letto che posso aggiungere ulteriori risorse guardate in context.xml
di Tomcat ma questo non sembra essere proprio quello di cui ho bisogno - a meno che non sia possibile specificare una directory che verrà guardata (incluso il monitoraggio in modo ricorsivo di sottocartelle e file)?
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/someother.file</WatchedResource>
<Manager pathname=""/>
</Context>
Quindi, in sostanza, la mia domanda è posso guardare l'intera cartella classi (senza includere ogni WatchedResource
esplicitamente) per innescare un redeploy in Tomcat?
In caso contrario, è possibile configurare Eclipse su touch
il file web.xml, ogni volta che si salva un file sorgente in quel progetto? Sto sviluppando su un sistema Windows. :(
PS Io non sono interessati al prodotto JRebel. Qualsiasi risposta dovrebbe essere una soluzione gratuito.
Aggiornamento
Secondo il Tomcat documentation, la cartella delle classi deve essere monitorata impostando il contesto da ricaricare:
Impostare su true se si desidera Catalina a classi del monitor in/WEB-INF/classes/ e/WEB-INF/lib per le modifiche, e ricaricare automaticamente l'applicazione web se viene rilevata una modifica.
Solo le modifiche al web.xml sembrano attivare una ricarica. È un bug o la mia configurazione è errata?
Inoltre, ho letto su come impostare l'attributo docBase
per un determinato contesto:
docBase="webapps/someExample"
Questo sembra essere vicino a quello che mi serve, come ho potuto quindi ripubblicare in Eclipse rapidamente. Il mio unico problema è che ho bisogno di più web app/servlet da eseguire contemporaneamente in Tomcat, sulla stessa porta ecc.
Sai se esiste un modo per farlo con più app Web in esecuzione in Tomcat? (Uno solo deve essere nel percorso di 'build output') – Mikaveli
Non sono sicuro di seguirti. Disponi di più progetti web indipendenti che vuoi comportarti allo stesso modo durante lo sviluppo? Oppure, hai più progetti web che utilizzano la stessa libreria condivisa e vuoi che la libreria condivisa si compili in una cartella di classi di progetti web? Se i progetti sono indipendenti, è sufficiente un file di contesto per progetto (denominare il file .xml). Se i progetti utilizzano lo stesso codice condiviso e lo si desidera compilare nella cartella delle classi Web, non sono sicuro di come si farebbe. –
philwb
Possiedo più applicazioni Web che devono essere eseguite nella stessa istanza di Tomcat. Non ho bisogno dello stesso comportamento "hot deploy". – Mikaveli