1.前言
首先,本文創作靈感源於博客園園作者signheart,特此鳴謝!原文鏈接見文末推薦;
百度都搜破了,全網講的都是如何將maven項目部署到tomcat上,對於熱部署的認知,真是令人汗顏!
其次說說熱部署的含義:
熱部署原來被定義為:tomcat啟動后,如果你往webapps目錄下,添加新的項目,tomcat會實現自動將其發布的功能,這時,就叫做熱部署。
網上所實現的熱部署,也是這樣:通過修改pom.xml,利用maven插件,運行tomcat7:run命令自動將maven項目進行打包,並發布到tomcat上。
純JavaWeb項目對熱部署的定義為:修改Java文件和其它文件不需要重啟tomcat,可以即時生效。
本文將帶你一步一步實現真正的熱部署!
2.情景展示
maven項目標准目錄結構展示
maven項目Java文件的默認編譯位置
在eclipse中,MavenWeb項目如何實現熱部署?
3.錯誤方式
手動修改maven項目的class文件的默認輸出位置
第一步:將class文件的編譯位置:demo_WebService2/target/classes,統一改為:demo_WebService2/src/main/webapp/WEB-INF/classes;
第二步:采用了"Default output folder"(選中"Allow output for source folders"可以看到);
第三步:Tomcat熱部署訪問:D:\WorkSpaces\eclipse2016\demo_WebService2\src\main\webapp;
雖然項目也可以正常啟動並運行,但是這樣的弊端有二:
其一,無法單獨運行Java類,強制運行時,會報錯:找不到或無法加載主類;
其二,不能更新maven項目,一但更新maven項目,就會導致class文件的默認位置還原為target/classes目錄下。
什么時候需要更新maven項目?pom.xml更改后,必須更新,否則不生效。
4.解決方案
修改pom.xml改變修改maven項目的lass文件的默認輸出位置。
改動一:更改maven默認的打包目錄
在plugins標簽體內添加
<!-- 更改maven默認的打包目錄 --> <plugin> <artifactId>maven-war-plugin</artifactId> <configuration> <webappDirectory>${project.basedir}/src/main/webapp</webappDirectory> <warSourceDirectory>${project.basedir}/src/main/webapp</warSourceDirectory> </configuration> </plugin>
改動二:更改class文件的編譯位置
在build標簽體內添加
<outputDirectory>${project.basedir}/src/main/webapp/WEB-INF/classes</outputDirectory>
第三步:保存並更新maven項目(Alt+F5)
選中項目-->右鍵-->Build Path-->Configuire Build Path
class文件的輸出位置已經變更至WEB-INF下(測試除外)
第四步:修改server.xml
Server工程-->打開要熱部署項目所對應的tomcat的server.xml文件
在Host標簽體內添加Context標簽,指定項目發布位置,及訪問路徑
第五步:以debug模式運行項目即可。
第六步:網頁訪問