Abbiamo un'applicazione che fino a poco tempo fa era un singolo progetto Maven WAR. Stavamo usando il plugin Tomcat Maven per eseguire l'applicazione su workstation sviluppatore locale con:Tomcat Maven plug-in e progetti Maven multi-modulo
mvn tomcat:run
Siamo stati in grado di modificare i file JSP mentre l'istanza di Tomcat incorporato è stato in esecuzione e le variazioni apparirebbero nei browser web più che bene. Capisco (dalla documentazione del plugin) che quando si utilizza il tomcat: run goal, WAR viene caricato come un'applicazione web dinamica e quindi le modifiche apportate ai file JSP all'origine vengono rilevate da Tomcat in fase di runtime senza riavvio.
L'applicazione ha raggiunto dimensioni abbastanza grandi e abbiamo dovuto riutilizzare un gran numero di classi in alcuni punti diversi oltre al progetto Web, quindi abbiamo rifattorizzato la base di codice in un progetto Maven multi-modulo. La struttura è ora:
parent Maven POM
|
---- artifact1.jar
|
---- artifact2.jar -> depends on artifact1.jar
|
---- artifact3.jar -> depends on artifact1.jar
|
---- artifact4.jar -> depends on artifact2.jar and artifact3.jar
|
---- artifact5.war -> depends on artifact1.jar, artifact2.jar, artifact3.jar and artifact4.jar
Dopo il refactoring siamo stati in grado di utilizzare Tomcat: eseguito da root directory del progetto per eseguire il progetto guerra come il plugin è in grado di rilevare i manufatti JAR. Quindi, siamo passati ad usare il plugin tomcat: run-war-only. Il modulo WAR ora si avvia correttamente.
Tuttavia, dalla documentazione, sembra che l'obiettivo della sola guerra esegua i file WAR come applicazioni Web pacchettizzate. Pertanto, le modifiche apportate ai file JSP ora non vengono rilevate dal server Tomcat incorporato durante l'esecuzione. Per ogni modifica ai file JSP dobbiamo riavviare il server.
C'è un modo per noi in questo Maven multi-modulo configurato per eseguire progetti WAR come applicazioni web dinamiche in modo che almeno le modifiche ai file JSP vengano rilevate da Tomcat senza riavviare?
Con il plugin Maven 3.xe Tomcat7 Maven, il comando 'mvn -am -pl artifact5 tomcat7: run' funziona perfettamente. – manish