我們有一個應用程序,直到最近纔有一個Maven WAR項目。我們使用Tomcat Maven插件使用運行在本地開發人員工作站應用程序:Tomcat Maven插件和多模塊Maven項目
mvn tomcat:run
我們能夠改變JSP文件,同時嵌入的Tomcat實例正在運行和變化將出現在Web瀏覽器就好了。我從插件文檔中瞭解到,在使用tomcat:run目標時,WAR會作爲動態Web應用程序加載,因此,在運行時由Tomcat選擇在源文件中對JSP文件所做的更改而無需重新啓動。
應用程序已經達到相當大的規模,我們需要在Web項目之外的幾個不同的地方重用大量的類,所以我們將代碼重構爲多模塊Maven項目。結構現在是:
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
後,我們無法使用Tomcat的重構:從項目的根目錄下運行WAR項目作爲插件運行是無法檢測到JAR文物。所以,我們切換到使用tomcat:run-war-only插件。 WAR模塊現在可以正常運行。
然而,從文檔,似乎運行戰爭唯一的目標對待WAR文件作爲打包的Web應用程序。因此,我們現在對JSP文件所做的任何更改都不會在運行時由嵌入式Tomcat服務器執行。對於每個JSP文件的更改,我們都必須重新啓動服務器。
是給我們在這個多模塊Maven建立一種方式來運行WAR項目,動態Web應用程序,以便至少改變JSP文件是由Tomcat的回升,無需重新啓動?
與Maven 3.x和Tomcat7 Maven插件,命令'MVN -am -pl artifact5 tomcat7:run'工作得很好。 – manish