Eclipse中maven環境使用jetty啟動後不能儲存更改後的css,js等靜態檔案的解決方法
阿新 • • 發佈:2019-01-24
【問題現象】
使用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>
大功告成!