maven jetty plugin

前言: 在 maven 下测试调试时,相比较 Tomcat 、Jboss 、Jetty 而言,我的更倾向于使用 Jetty Plugin。
怎么说呢?使用 Jetty Plugin 的时候最爽的是不用你敲打包、部署,而后再启动服务器的指令,只需敲一句:mvn jetty:run
或直接点 eclipse 上的 run 按钮就完事了。并且更爽的是,你修改资源文件,Jetty 能自动扫描到并及时给予反馈进行重加载,
这对修改java文件颇有帮助,不用每次修改java文件都要重启服务器,省掉了很多不必浪费的时间。
固然,若是想要 Jetty 跑得更理想,还须要禁止 Jetty 使用映射缓存。

环境:
Maven  3.0.4
Eclipse  3.6
maven-jetty-plugin 6.1.10

项目结构:


pom.xml
< 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 >

index.jsp
< html >
  < body >
   < h1 >Maven Jetty Plugin </ h1 >
   < h2 >Hello World! </ h2 >
  </ body >
</ html >

选中项目,右键选择 Run As --> Maven build
Name:根据须要,本身取个名
Goals:输入要执行的 maven 命令
其他的不用管,直接点击 Run



Jetty 运行完成以后,访问:http://localhost:8080/jetty-plugin-demo/


 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

禁止 Jetty 使用映射缓存:

当你想试图去修改正在被访问的资源文件,像 CSS、JS、FTL等,这时候你修改完成想保存的时候,是保存不了的。
你必须停掉 Jetty 容器(若是是在CMD下运行的 Jetty 容器,按 Ctrl + C 停掉 Jetty),才能保存。保存完成后必须
从新启动 Jetty 容器才能看见效果。这样作不管是对修改 .css、.js、.ftl 等都很是麻烦和不爽。

究其缘由,这是 Jetty 使用了内存映射文件来缓存静态文件。在Windows下面,使用内存映射文件会致使文件被锁定。
解决方案是不使用内存映射文件来作缓存。步骤以下:
css

根据所使用 Jetty 版本在本地的 maven 仓库中找到 Jetty 版本对应的jar包。 html

如:
    <plugins>
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <version>6.1.10</version>
      </plugin>
    </plugins>
java

则需找到( 个人本地的 maven 仓库是在 D:\Repositories\Maven ):
D:\Repositories\Maven\org\mortbay\jetty\jetty\6.1.10\jetty-6.1.10.jar
web

用解压缩工具打开此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>
apache

将 true 改为 false,以禁止使用映射缓存。 缓存

删除原jar包中的webdefault.xml文件,将修改过的webdefault.xml文件压缩进去,OK。搞定。 服务器

这样以后就能在 Jetty 运行时修改并保存资源文件。

相关文章
相关标签/搜索