December
10th,
2015
前言
在Maven下测试/调试时,我们可以使用Tomcat、Jetty、Jboss。使用Jetty Plugin的时候不用敲打包、部署,然后再启动服务器的指令,只需敲一句:mvn jetty:run,而且当我们修改资源文件、Java代码时,Jetty 能自动扫描到并及时给予反馈进行重加载,这对修改java文件很有帮助,不用每次修改java文件都要重启服务器,省掉了不少没必要浪费的时间。
需要注意的是:在IntelliJ IDEA,由于没有自动编译,所以修改不会生效,需要按Ctrl+Shift+F9(修改多个文件按Ctrl+F9)编译一下。
热部署的好处:代码修改后,不必重新启动Web服务器。
步骤
- 在pom.xml(Web工程的pom.xml)文件中配置jetty插件的参数:scanIntervalSeconds,配置pom.xml片断如下:
<build>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
<configuration>
<webAppSourceDirectory>${project.basedir}/src/main/webapp</webAppSourceDirectory>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8000</port>
</connector>
</connectors>
<webAppConfig>
<contextPath>/web</contextPath>
</webAppConfig>
<!-- 每5秒的间隔扫描一次,实现热部署 -->
<scanIntervalSeconds>5</scanIntervalSeconds>
</configuration>
</plugin>
</plugins>
</build>
- 执行mvn jetty:run运行项目(DEBUG使用:mvnDebug jetty:run)
使用“-Plocal”指定profile
cd steel-cbms\cbms-web
mvn jetty:run -Plocal
- 修改Java代码好后Ctrl+Shift+F9编译代码。如果是项目的配置jetty plugin能够自动检测到,并自动重新加载配置文件。 我们将控制台看到“[INFO] Reload Mechanic: automatic”信息:
[INFO] Webapp source directory = C:\dev\gtxh\steel-cbms\cbms-web\src\main\webapp
[INFO] Reload Mechanic: automatic
[INFO] Classes = C:\dev\gtxh\steel-cbms\cbms-web\target\classes
[INFO] Context path = /web
[INFO] Tmp directory = determined at runtime
[INFO] Web defaults = org/mortbay/jetty/webapp/webdefault.xml
[INFO] Web overrides = none
[INFO] web.xml file = C:\dev\gtxh\steel-cbms\cbms-web\src\main\webapp\WEB-INF\web.xml
[INFO] Webapp directory = C:\dev\gtxh\steel-cbms\cbms-web\src\main\webapp
[INFO] No Transaction manager found - if your webapp requires one, please configure one.
[INFO] Initializing Spring root WebApplicationContext
如果相关依赖包下载不到,请使用VPN。