首先,本文創做靈感源於博客園園做者signheart,特此鳴謝!原文連接見文末推薦;html
百度都搜破了,全網講的都是如何將maven項目部署到tomcat上,對於熱部署的認知,真是使人汗顏!web
其次說說熱部署的含義:tomcat
熱部署原來被定義爲:tomcat啓動後,若是你往webapps目錄下,添加新的項目,tomcat會實現自動將其發佈的功能,這時,就叫作熱部署。併發
網上所實現的熱部署,也是這樣:經過修改pom.xml,利用maven插件,運行tomcat7:run命令自動將maven項目進行打包,併發布到tomcat上。app
純JavaWeb項目對熱部署的定義爲:修改Java文件和其它文件不須要重啓tomcat,能夠即時生效。eclipse
本文將帶你一步一步實現真正的熱部署!webapp
maven項目標準目錄結構展現maven
maven項目Java文件的默認編譯位置 post
在eclipse中,MavenWeb項目如何實現熱部署? 測試
手動修改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更改後,必須更新,不然不生效。
修改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模式運行項目便可。
第六步:網頁訪問