1 在pom.xml add :
<build>
<finalName>XXX(工程名字)</finalName>
<plugins>
<!-- http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html -->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.16.v20140903</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webAppConfig>
<contextPath>/lhc</contextPath>
</webAppConfig>
<webAppSourceDirectory>webapp</webAppSourceDirectory>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8080</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
<stopPort>9966</stopPort>
<stopKey>foo</stopKey>
<stopWait>30</stopWait>
</configuration>
</plugin>
</plugins>
</build>
具体参数说明看 http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html
2 config the ide(eclipse)
选中项目,右键选择 Run As --> Maven build jetty:run
到此配置完成。 运行或debug:右键 Run As
3 禁止 Jetty 使用映射缓存:
当你想试图去修改正在被访问的资源文件,像 CSS、JS、FTL等,这时候你修改完成想保存的时候,是保存不了的。 你必须停掉 Jetty 容器(如果是在CMD下运行的 Jetty 容器,按 Ctrl + C 停掉 Jetty),才能保存。保存完成后必须 重新启动 Jetty 容器才能看见效果。这样做无论是对修改 .css、.js、.ftl 等都非常麻烦和不爽。
究其原因,这是 Jetty 使用了内存映射文件来缓存静态文件。在Windows下面,使用内存映射文件会导致文件被锁定。 解决方案是不使用内存映射文件来做缓存。步骤如下:
根据所使用 Jetty 版本在本地的 maven 仓库中找到 Jetty 版本对应的jar包。
如: <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.1.10</version> </plugin> </plugins>
则需找到( 我的本地的 maven 仓库是在 D:\Repositories\Maven ): D:\Repositories\Maven\org\mortbay\jetty\jetty\6.1.10\jetty-6.1.10.jar
用解压缩工具打开此jar包,进到: jetty-6.1.10.jar\org\mortbay\jetty\webapp 找到webdefault.xml文件,即: jetty-6.1.10.jar\org\mortbay\jetty\webapp\webdefault.xml 解压出此文件webdefault.xml,找到: <param-name>useFileMappedBuffer</param-name> <param-value>true</param-value>
将 true 改成 false,以禁止使用映射缓存。
删除原jar包中的webdefault.xml文件,将修改过的webdefault.xml文件压缩进去,OK。搞定。
这样之后就能在 Jetty 运行时修改并保存资源文件。