首先建议使用jetty9,因为据官方文档显示,Jetty 7 and Jetty 8 are now EOL (End of Life),如下。但是由于项目使用的版本一般都比较低,这里以jetty8为例。
Version | Servlet | Java | Namespace | Licenses | Site | Status |
---|---|---|---|---|---|---|
Jetty 9 | Servlet 3.1 | Java 1.8 | org.eclipse.jetty.* | EPLv1 /ASLv2 | Eclipse.org | Stable Release |
Jetty 8 | Servlet 3.0 | Java 1.6 | org.eclipse.jetty.* | EPLv1 /ASLv2 | Eclipse.org | End of Life / Nov 2014 |
Jetty 7 | Servlet 2.5 | Java 1.5 | org.eclipse.jetty.* | EPLv1 /ASLv2 | Eclipse.org | End of Life / Nov 2014 |
Jetty 6 | Servlet 2.5 | Java 1.4 | org.mortbay.* | ASLv2 | Codehaus.org | End of Life / Nov 2010 |
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.16.v20140903</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
其中9080是指定的端口,也可以在pom.xml文件中指定端口,且在pom.xml文件中指定的端口优先级要比Goals中指定的端口的优先级要高。配置如下:
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.16.v20140903</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文件中配置的端口的优先级比较高!