之前在项目中采用maven插件启动项目,如果修改的是方法体的内容,就不需要重启。但是要是增加方法或者修改方法名或者方法的参数就需要重启。当时也没有太关注过jetty插件的配置。后来换了一家公司,每次修改代码,只要一保存,jetty都会自动重启,而且由于自己在编写代码,经常是重启不成功,还得需要重启手动重启。后来查了下资料,找到了解决办法。
项目中的jetty配置是这样的,这样的话每次修改代码都会重启。
<span style="font-size:14px;"><build>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.12</version>
<configuration>
<contextPath>/</contextPath>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8090</port>
</connector>
</connectors>
<reload>automatic</reload>
<scanIntervalSeconds>3</scanIntervalSeconds>
<systemProperties>
<systemProperty>
<name>org.mortbay.util.URI.charset</name>
<value>UTF-8</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build></span>
后来我将<reload>和<scanIntervalSeconds>取消,改为如下,可以了,不用每次自动重启了。
<build>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.12</version>
<configuration>
<contextPath>/</contextPath>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8090</port>
</connector>
</connectors>
<!-- <reload>automatic</reload> -->
<!-- <scanIntervalSeconds>3</scanIntervalSeconds> -->
<systemProperties>
<systemProperty>
<name>org.mortbay.util.URI.charset</name>
<value>UTF-8</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
<reload>默认值为 automatic,它与大于 0 的 scanIntervalSeconds 节点一起作用,实现自动热部署的工作。设为 manual 的好处是,当你改变文件内容并保存时,不会马上触发自动扫描和重部署的动作,你还可以继续的修改,直至你在 Console 或命令行中敲回车键(Enter)的时候才触发重新加载的动作。这样可以更加的方便调试修改。