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 運行時修改並保存資源文件。

相關文章
相關標籤/搜索