GradleJetty插件锁定文件

GradleJetty插件锁定文件,jetty,gradle,Jetty,Gradle,有没有办法完全从gradle解决由jetty引起的文件锁定问题 一些澄清: 通过运行gradle jettyRun使用时,jetty会在使用Windows时锁定静态资源文件(html、css、js等)。 您可以在中看到问题的描述 同一篇文章还介绍了如何解决这个问题。基本上,你必须: 禁用文件映射缓冲区的使用 根本不用NIO 这两件事都需要向项目中添加一些特定于jetty的配置文件,我不想这样做-jetty插件只是为了方便而使用,维护配置是不对的 我不需要NIO在本地机器上进行测试,所以任何解决方

有没有办法完全从
gradle
解决由
jetty
引起的文件锁定问题

一些澄清:
通过运行
gradle jettyRun使用时,
jetty会在使用Windows时锁定静态资源文件(html、css、js等)。 您可以在中看到问题的描述

同一篇文章还介绍了如何解决这个问题。基本上,你必须:

  • 禁用文件映射缓冲区的使用
  • 根本不用NIO
  • 这两件事都需要向项目中添加一些特定于jetty的配置文件,我不想这样做-jetty插件只是为了方便而使用,维护配置是不对的

    我不需要NIO在本地机器上进行测试,所以任何解决方案都可以工作

    编辑:

    现在,我选择了将
    useFileMappedBuffer
    设置为
    false
    的选项。这是如何做到的:

  • 指定
    webdefault.xml
    的路径,如

    [jettyRun, jettyRunWar,jettyStop]*.with {
        //other configs
    
        webDefaultXml = file("${project.webAppDir}/WEB-INF/jetty-webdefault.xml")
    }
    
  • 从jetty的最新6.1.x发行版获取文件。该插件似乎只支持jetty 6。您可以在
    jetty-6.1.26\etc\webdefault.xml
    上对其进行本地化。显然,必须将其放置在上一步指定的路径上

  • 将默认servlet init参数
    useFileMappedBuffer
    更改为
    false


  • 我将研究使用嵌入式jetty而不是插件的选项。

    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
    的相应副本,根据需要调整版本号:


    我发现一个插件似乎是更好的选择:

    积极的
    • 不会锁定文件并支持(甚至Gretty称之为“”)
    • Gretty 1.2.0使用Jetty 9.2.9.v20150224。Gradle 2.2.1提供的Jetty插件使用Jetty 6.1.25
    • 使用相同的任务
      jettyRun
      (或者更简单地说
      run
    • “按任意键停止服务器”。Jetty插件需要CTRL+C,然后是Y
    • 据我所知,这部电影看起来很棒(不是那么棒)
    底片
    • 要设置buildscript的类路径依赖关系或直接从URL()应用插件,代码要稍微臃肿一些
    • Gretty崩溃,除非您明确地
      应用插件:“war”
      (Jetty插件扩展了war插件)

    感谢您提供该文件的链接。实际上,我已经停止使用GradleJetty插件——为了进行调试,我使用从eclipse启动的tomcat,或者应用程序代码本身中嵌入的jetty。