IntelliJ+AntBuild+Tomcat實現Maven站點的熱部署


  這段時間要研究WebGL技術,做一下三維建模項目,涉及到較多的前端編碼。eclipse編譯器那令人着急的編碼提示功能,以及丑惡的界面對項目的開展造成了一定的阻礙。為解決這個問題,轉向IntelliJ Idea這款IDE,下載了最新版,完成破解,開啟新征程。

  歷史證明摸着石頭過河,總是要喝兩口水的。征服之路:一、創建多模塊的Maven項目,與eclipse建項過程差不多,略過不提;二、通過Tomcat發布web站點后,怎樣實現文件的熱加載,即實時同步。這個問題比較蛋疼,網上一般提到的說法就是Tomcat在build時,發布展開的war包,即war exploded模式。但是我按照網友介紹,進行了一系列設置后,發現我的webapp文件編輯后不能很好的同步更新。js文件還成功了幾次,freemarker文件壓根沒反應,過了一晚上再看,連js的更新也沒有了。折騰了半天也沒個結果,有網友說用Jrebel插件,可這玩意兒要收費,嘗試着破解后發現還不能與IDE兼容,無奈放棄。后來考慮直接把webapp資源拷貝到發布目錄吧,為此選擇了Ant Build方式。接下來,我就以這個建設的項目為例,講解下自己的web資源熱加載實現過程。

一、多模塊Maven項目的結構展示

  參考:理解 IntelliJ IDEA 的項目配置和Web部署

  Project Structure > Project Setttings > Artifacts:項目打包設置方案中添加web站點的兩種打包方案,war是以生成war包再部署的方式發布,war exploded是通過生成展開目錄架構的文件夾的方式發布。

war exploded在文件更新自動同步時起作用,不必每次都打war包。

    

二、配置Tomcat運行方式  

  參考:IntelliJ IDEA14 + tomcat 設置熱部署

    

       

三、配置Ant Build構建方案,同步項目資源文件到Debug的發布目錄下

  1、我在web項目根目錄下添加一個build.xml的ant配置文件,配置中添加一個策略,將src/main/webapp/目錄下的文件拷貝到發布目錄 target/train-simulate-web-1.0-SNAPSHOT/ 下。project.basedir屬性設置為".",指向配置文件所在的根目錄。這里需要說一下,debug模式下,tomcat直接運行的是war exploded發布輸出的目錄。

  

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project name="" default="fileCopy" basedir=".">
 3     <property name="webapp_dir" value="src/main/webapp/"/>
 4     <property name="to_tomcat" value="target/train-simulate-web-1.0-SNAPSHOT/"/>
 5     <target name="fileCopy">
 6         <copy todir="${to_tomcat}">
 7             <fileset dir="${webapp_dir}"></fileset>
 8         </copy>
 9     </target>
10 </project>

   2、將Ant Build的拷貝策略附加到項目的編譯動作上(自動化實現的重要步驟)。我這里設置的是在編譯前執行Ant構建。這一步設置完成后,結合Tomcat配置中的update classes and  resources設置。每次執行update操作或從IDE上失去焦點,都將觸發項目的build操作,build操作再觸發Ant構建的執行,從而達到web資源的實時更新目的

 

小結:

  配置到這里,web項目的資源文件,class文件都能夠實現自動化的更新部署了,不必每次更新都去人為的重新發布。效果上湊合可以滿足我目前的心理需求底限了。不過這種搞法,還是無法解決web外的其他jar包模塊的自動發布問題,因為jar項目修改后,需要打包成新的jar包,替換到tomcat發布目錄下。但是實際上在debug模式下,jar包文件被進程占用,是沒辦法重新替換的。這種情況,就只能重啟DEBUG調試了。假如我對IDE的理解有誤,事實上有更好的方案來處理熱部署問題,歡迎留言告訴我一聲!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM