强烈建议使用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文件中配置的端口的优先级比较高!