有没有办法完全修复jetty
gradle
引起的文件锁定问题?
一些澄清:
通过运行gradle jettyRun,
jetty使用Gradle Jetty plugin时,会导致在使用Windows时锁定静态资源文件(html,css,js等)。
您可以在Files locked on Windows中查看问题的说明。
同一篇文章还介绍了如何解决这个问题。基本上你必须要么:
这两件事都需要在项目中添加一些特定于码头的配置文件,我不想这样做 - jetty插件只是为了方便而使用,并且维护配置感觉不对。
我不需要NIO在本地计算机上进行测试,因此任何解决方案都可以使用。
修改
目前,我选择了将useFileMappedBuffer
设置为false
的选项。这是怎么做的:
指定webdefault.xml
的路径
[jettyRun, jettyRunWar,jettyStop]*.with {
//other configs
webDefaultXml = file("${project.webAppDir}/WEB-INF/jetty-webdefault.xml")
}
从最新的6.1x jetty发行版中获取文件。该插件似乎只支持jetty 6.您可以在jetty-6.1.26\etc\webdefault.xml
进行本地化。显然,您必须将它放在上一步指定的路径上。
useFileMappedBuffer
更改为false
我将研究使用嵌入式Jetty插件的选项。
答案 0 :(得分:3)
我发现一个插件似乎是一个更好的选择:
https://github.com/akhikhl/gretty
jettyRun
(或更简单地run
)。apply plugin: 'war'
(Jetty插件扩展了War插件)答案 1 :(得分:1)
Kiril回答了他自己的问题,非常感谢。您应该遵循Kiril的说明,这将帮助您找到合适的webdefault.xml
。
要了解Gradle启动的Jetty版本,请执行
gradle jettyRun -i
你会看到这样的事情:
...
Tmp directory = determined at runtime
Web defaults = org/mortbay/jetty/webapp/webdefault.xml
Web overrides = none
Webapp directory = C:\dev\my-project\src\main\webapp
Starting jetty 6.1.25 ...
jetty-6.1.25
...
我花了一段时间才找到Jetty 6.1.25的副本,因为它不再列在Jetty下载页面上(甚至不在存档部分!)。
然后,您可以从此处获取webdefault.xml
的相应副本,根据需要调整版本号: