gpt4 book ai didi

gradle - jettyRun 在复制任务上引发了 war 写入问题

转载 作者:行者123 更新时间:2023-12-03 06:19:07 24 4
gpt4 key购买 nike

我已经在一个爆炸的 war 文件上使用 jetty 设置了一个 gradle 项目,并结合了 watch 插件。对于任何 java 依赖项,如果源被修改,watch 插件将启动“jar”任务和复制任务,将生成的 jar 放入分解的 war 文件中。使用 jetty 的自动重新加载,这个新 jar 被拾起。一切都很好。

我在包含 javascript 和 css 源文件的模块上有类似的 watch 。修改后,文件被构建(使用 gulp 插件 concat/minify)并执行复制任务以将它们复制到 war 文件中。但是,在尝试复制 .js 和 .css 文件时,由于 jetty 当前正在使用这些文件,因此出现了由只读问题引起的异常。

有没有办法解决这个问题而不必停止/启动 jetty ?这是我的配置/任务的相关部分。

jetty 配置如下:

jettyRun {
httpPort = 8080
contextPath = project.name
scanIntervalSeconds = 1
reload = "automatic"
webAppSourceDirectory = file(EXPLODED_DIR)
}

watch 配置:
watch {         
clientwatch {
files fileTree(CLIENT_SRC_DIR).include('**/*.js', '**/*.css')
tasks ':client_module:assemble', 'copyClientFiles'
}
}

复制任务:
task copyClientFiles(type: Copy) {
from fileTree(CLIENT_BUILD_DIR).include("*.min.js", "*.min.css")
into EXPLODED_DIR
}
copyClientFiles.inputs.dir CLIENT_BUILD_DIR
copyClientFiles.outputs.dir EXPLODED_DIR

最佳答案

我实际上在这里找到了解决我的问题的方法:

http://docs.codehaus.org/display/JETTY/Files+locked+on+Windows

其中指出:

Jetty buffers static content for webapps such as html files, css files, images etc and uses memory mapped files to do this if the NIO connectors are being used. The problem is that on Windows, memory mapping a file causes the file to be locked...



为了解决这个问题,我只是在 <web-app> 下添加了以下内容web.xml 中的节点:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.mortbay.jetty.servlet.DefaultServlet</servlet-class>
<init-param>
<param-name>useFileMappedBuffer</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>

关于gradle - jettyRun 在复制任务上引发了 war 写入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27554990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com