1. 程式人生 > >Eclipse中maven環境使用jetty啟動後不能儲存更改後的css,js等靜態檔案的解決方法

Eclipse中maven環境使用jetty啟動後不能儲存更改後的css,js等靜態檔案的解決方法

問題現象

     使用Maven + Eclipse + Jetty 進行J2EE開發,但有一個問題就是css、js等靜態檔案更改以後,在eclipse裡儲存都會失敗,eclipse給出的錯誤資訊是檔案被鎖定,這樣迫使每次都得重啟Jetty,對開發非常不方便。

原因分析】:

    Jetty會使用記憶體對映檔案來快取靜態檔案,包括js,css檔案。

    在Windows下,使用記憶體對映檔案會導致檔案被鎖定,所以當Jetty啟動的時候無法在編輯器對js或者css檔案進行編輯。

解決方案】:

      更改Jetty預設配置,不適用記憶體對映檔案來做快取。

 步驟:

     1.找到webdefault.xml,在本地倉庫中找到jetty外掛,以6.1.26版本為例,jetty-6.1.26.jar在$maven_repo$/org/mortbay/jetty/jetty/6.1.26/jetty-6.1.26.jar,webdefault.xml檔案在包org\mortbay\jetty\webapp下。

   它在jar檔案中的路徑是org/mortbay/jetty/webapp/webdefault.xml

  2.找到useFileMappedBuffer引數,把值設成false

   <init-param>
        <param-name>useFileMappedBufferparam-name>
        <param-value>false<param-value>
    init-param>

  3.在pom.xml中,設定jetty使用更新過的webdefault.xml檔案

    <groupId>org.mortbay.jettygroupId>
    <artifactId>maven-jetty-plugin<artifactId>
    <version>6.1.26</version>
    <configuration>
        ...
        <webAppConfig>
           <defaultsDescriptor>src/test/resources/webdefault.xml</defaultsDescriptor>
        </webAppConfig>
    <configuration>

大功告成!