強烈建議使用jetty9,因為據官方文檔顯示,Jetty 7 and Jetty 8 are now EOL (End of Life),如下:
Version | Servlet | Java | Namespace | Status |
---|---|---|---|---|
Jetty 9 | Servlet 3.1 | Java 1.8 | org.eclipse.jetty.* | Stable Release |
Jetty 8 | Servlet 3.0 | Java 1.6 | org.eclipse.jetty.* | End of Life / Nov 2014 |
在pom.xml文件的<build></build>標簽中加入如下配置:
<plugins> <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.4.4.v20170414</version> <configuration> <scanIntervalSeconds>5</scanIntervalSeconds> <webApp> <contextPath>/</contextPath> </webApp> </configuration> </plugin> </plugins>
配置說明:
configuration.scanIntervalSeconds 配置表示新代碼的掃描時間間隔(秒),值 <= 0 表示不掃描。這里利用的是jetty 的定時重載代碼的特性,做修改后不用重新啟動項目,自動掃描出改動后會自動更新class文件的。
configuration.webApp.contextPath 配置表示工程的虛擬目錄名,如果配置為/,則屆時訪問路徑為hostname:port/,如果配置為/jetty,則屆時訪問路徑為hostname:port/jetty,有點相當於namespace的作用。
啟動看效果,用Maven Build啟動,需在Goals欄中配置如下:
jetty:run -Djetty.port=9080
或是直接在項目根目錄下在命令行中用maven命令啟動 mvn jetty:run -Djetty.port=9080
其中9080是指定的端口,也可以在pom.xml文件中指定端口,且在pom.xml文件中指定的端口優先級要比Goals中指定的端口的優先級要高。配置如下:
<plugins> <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.4.4.v20170414</version> <configuration> <scanIntervalSeconds>5</scanIntervalSeconds> <webApp> <contextPath>/</contextPath> </webApp> <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> <port>10000</port> </connector> </connectors> </configuration> </plugin> </plugins>
此時啟動的話,如果在Goals也配置了-Djetty.port=9080,則有效的訪問路徑還是hostname:10000/,因為在pom.xml文件中配置的端口的優先級比較高!