标签:
转载:http://blog.163.com/xueling1231989@126/blog/static/1026408072013101311395492/
Maven 3.0.4
Eclipse 3.6
maven-jetty-plugin 6.1.10
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.fancy</groupId>
<artifactId>jetty-plugin-demo</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>jetty-plugin-demo Maven Webapp</name>
<url>http://maven.apache.org</url>
<build>
<finalName>jetty-plugin-demo</finalName>
<plugins>
<!-- Maven Jetty Plugin -->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.10</version>
<configuration>
<!-- 每2秒的间隔扫描一次,实现热部署 -->
<scanIntervalSeconds>2</scanIntervalSeconds>
</configuration>
</plugin>
</plugins>
</build>
</project>
<html>
<body>
<h1>Maven Jetty Plugin</h1>
<h2>Hello World!</h2>
</body>
</html>

究其原因,这是 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 运行时修改并保存资源文件。
http://www.blogjava.net/fancydeepin/archive/2012/06/23/maven-jetty-plugin.html
标签:
原文地址:http://www.cnblogs.com/diyunpeng/p/4693729.html