有人會問,有了tomcat還弄個jetty干嘛,不是多事嗎?其實不然,你想,用tomact是整個工程都要發布一次,工程大了后很費時間,而且如果只是修改了某個jsp文件或某個配置文件,要測試時也得整個工程都發布。用jetty則不然,運行后會一直運行,關鍵是它可以配置定時掃描工程並加載進行容器,這樣如果有改動后不用再重啟服務而可以直接在瀏覽器中刷新。
說了這么多,那么如何在工程中配置jetty呢?下面聽我一一道來。
一:修改pom.xml文件
jetty是一個maven的插件,因此我們需要修改pom.xml來引用這個插件,修改的部分如下:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.16.v20140903</version>
<configuration>
<webAppSourceDirectory>src/main/webapp</webAppSourceDirectory>
<!-- 自動掃描時間參數,此處設置為3秒,為0表示 不自動掃描 -->
<scanIntervalSeconds>3</scanIntervalSeconds>
<!-- 工程的虛擬目錄名 -->
<webAppConfig>
<contextPath>/test</contextPath>
</webAppConfig>
<!-- 配置的停止jetty服務 -->
<stopKey>shutdown</stopKey>
<stopPort>9998</stopPort>
</configuration>
</plugin>
二:啟動與停止
1.新增一個外部命令

2.配置maven路徑與jetty命令


3.啟動jetty

4.啟動瀏覽器,因為jetty默認是監聽8080端口,所以輸入"http://localhost:8080/test/",如能正常打開表示jetty環境配置成功,注意后面的test是在pom中配置的,如沒有配置名稱則不需要了,如果配置成其它的名稱則要對應。如要修改監聽的端口,第二步的jetty:run的命令后面加上
-Djetty.port=(指定的端口)

5.如果要調試程序,則在命令的配置界面選擇Environment標簽頁,增加一項Veriable,name=【MAVEN_OPTS】,value=【-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,
address=8090
,server=y,suspend=y】即可,如下圖示

注意:value中標紅的項是設置調試聽的端口,不要和運行的端口弄重了
6.配置要調試的工程
在工程上右鍵,彈出的菜單【Degug As】
->【Debug Configurations..】



7.開始調試
啟動外部命令,我配置的叫jetty-debug


運行工程的debug



8.停止jetty
停止jetty在maven配置好參數后,和建立jetty的運行外部工具一樣操作,只是運行的參數不同,如下圖示

三:常見錯誤解決
1.PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required 問題
解決:->右鍵項目->properties->Libraries->JRE System Library->Edit->Installed JREs->Edit->JRE home->找到JDK文件里面的jre->OK,注意是安裝的jdk目錄下的jre而不是原來安裝的jre目錄
2.在有些環境中,如果不能正常的運行mvn jetty:run命令,是因為默認情況下,只有org.apache.maven.plugins和org.codehaus.mojo兩個groupid下的插件才支持簡化的命令行調用,為了能在命令行中直接運行mvn jetty:run,需要修改下maven的配置文件,在配置文件中增加如下代碼即可
<settings>
<pluginGroups>
<pluginGroup>org.mortbay.jetty</pluginGroup>
</plugiGroups>
...
<settings>