在idea使用jetty

參考:https://www.jetbrains.com/idea/help/run-debug-configuration-jetty-server.html
背景:web開發當中,我覺得服務層的代碼儘量用單元測試來測,這樣可減少啓動web容器測試,容器測試麻煩且費時.雖然很多數據測試沒必要啓動web容器來測試,即使使用了htmlunit也替代不了測試最終的web頁面測試.所以想辦法使web頁面測試更簡單是有必要的.

用慣了idea+maven+jetty的方式,覺得用jetty比tomcat要方便很多.對於不是多模塊項目,使用jetty-maven-plugin是相當的方便,只在pom.xml配置一下這個插件,然後配置一下jetty:run就OK.

但對於多模塊項目,如果修改的是依賴模塊的類,就要在父項目install一下,再運行.install是比較費時的,也容易忘記.順便提下爲什麼修改依賴模塊的類要install.jetty:run雖然不以打包成war的方式運行,但運行前會去編譯與解析子項目,當本地庫有了子項目的jar依賴就不會報錯,並且web加載的依賴是本地庫jar包,而不是從依賴模塊的編譯目錄加載類,所以修改了依賴模塊的類,如果沒有install更新到本地庫,web的加載不是更新類.當然修改本web塊的類還是沒必要在父項目install,因爲jetty:run不會打包本web模塊的類成jar,而是從本web模塊的編譯目錄來加載類.



下面就介紹idea jetty插件的使用.
1.安裝jetty.下載jetty的穩定版(下載地址http://www.eclipse.org/jetty/downloads.php),並解壓到你想要安裝的目錄.要注意jetty9.3.xxxxx需要Java 8+,也就是說,如果你用Java7,就要下載jetty9.2.xxxxxx


2.安裝idea的jetty插件.ctrl+alt+s打開設置.點左側的Plugin-->在右邊的搜索過濾輸入jetty,查看一下jetty插件是否已安裝,未有安裝的就勾上-->點OK重啓IDEA.


3.配置Jetty的默認配置.在主界面的右上面打開Edit Configurations...-->點左側Defaults下的Jetty Server下的Local-->來到Server選項卡(圖15111901)


點擊Appication server右邊的Configure...按鈕選擇剛纔解壓的jetty.After launch前面的勾可以去掉,沒必要啓動完爲你自動打開某一URL,其它默認,然後點Apply即可.(配置過程可能提示你要激活JMX模塊,按提示做就可以了)


4.爲項目創建運行配置.點擊左上角的加號-->Jetty Server-->Local,來到Server選項卡(圖15111902),


4.1點Deployment選項卡,點右側的加號選Artifacts,再選模塊帶有:war exploded(我當前的是web:war exploded)的選項.然後點擊剛纔加號下面的筆編輯當前的Artifact,跟着就會彈出如下界面(通過主界面右上角的項目配置也可以進入),(圖15111903)


在此界面你可以修改Artifact,例如你可以使用依賴模塊的輸出目錄替代依賴模塊jar,在classes上右鍵-->Add Copy of-->Module Output-->選擇要加入的模塊,再展開lib-->刪除相應jar就可以.
然後回到剛纔的Deployment選項卡,勾上右側的Use custom context root:,輸入你想要的contextPath,再點Apply按鈕.
4.2再點Server選項卡,如果需要配置熱部署,就要配置On 'Update' action和On frame deactivation兩個選項(未配置Deployment,可能不會出現On frame deactivation),On 'Update' action的幾個選項在上面的鏈接有詳細介紹.這裏的On 'Update' action可理解爲打開'更新'動作.
文檔有介紹到,對於exploded artifacts(暴露構件,這就是我上面選帶exploded的原因),如果選Update classes and resources的意思就是,更改的resources文件被更新時或者更改的Java類文件(例如EJBs, servlets,)被編譯的時候,因爲打開了更新動作,jetty就會重新加載達到熱部署的目的.再來看看On frame deactivation(可理解爲打開幀鈍化),如果選了Do nothing,修改了類,熱部署也失效,但選了Update classes and resources,就會每隔幾秒時間,idea自動將更改過的類與源文件進行編譯.
這裏需要注意熱部署的前提:
a.必須在調試模式下運行jetty;
b.On 'Update' action選Update classes and resources,On frame deactivation選Update classes and resource.

反正我是極少用熱部署.

另:在IDEA,修改了java類不要以爲按了ctrl+s就會進行編譯,這是idea與eclipse一個很不同的地方,你按下ctrl+shift+f9就會主動編譯該類,ctrl+f9會編譯該工程,可以看看https://www.jetbrains.com/idea/help/eclipse.html#RunningReloadingChanges.


源代碼測試:http://download.csdn.net/detail/xiejx618/9284517

發佈了157 篇原創文章 · 獲贊 32 · 訪問量 140萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章