1. 程式人生 > >eclipse mavenWeb專案真正實現熱部署(修改java程式碼和頁面檔案不用重啟tomcat)

eclipse mavenWeb專案真正實現熱部署(修改java程式碼和頁面檔案不用重啟tomcat)

       

1.前言

  先說熱部署的含義:

  熱部署原來被定義為: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模式執行專案即可。

  第六步:網頁訪問

    

寫在最後

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦: