You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetty 12如何避免启动时重新解压WAR覆盖work目录修改?

在Jetty 12中保留work目录修改的方法

Jetty 12默认重启时会重新解压WAR包覆盖work目录的修改,核心原因是ee10-deploy模块的WebAppProvider默认启用了overrideExtract=true参数,而Jetty 9.x中该参数默认值为false。要阻止覆盖行为,只需调整部署配置:

步骤1:修改部署配置文件

找到Jetty base目录下的etc/jetty-ee10-deploy.xml文件(该文件由ee10-deploy模块自动引入),定位到WebAppProvider的配置节点,添加或修改overrideExtract参数:

<New id="webappprovider" class="org.eclipse.jetty.ee10.deploy.providers.WebAppProvider">
  <!-- 保留原有配置项 -->
  <Set name="monitoredDirName"><Property name="jetty.base" default="." />/webapps</Set>
  <Set name="defaultsDescriptor"><Property name="jetty.base" default="." />/etc/jetty-ee10-webdefault.xml</Set>
  
  <!-- 添加以下配置,禁用覆盖解压行为 -->
  <Set name="overrideExtract">false</Set>
</New>

overrideExtract=false的作用是:当work目录中已存在WAR的解压内容时,Jetty不会用WAR包内的文件覆盖已有修改。

步骤2:验证效果

修改配置后重启Jetty,work目录中已修改的jar或class文件将不会被WAR包重新覆盖。如果后续需要更新WAR包内容,只需删除work目录中对应webapp的解压文件夹,Jetty会自动重新解压最新的WAR包。

额外说明

  • 若需完全禁用WAR解压(直接从WAR文件运行),可设置<Set name="extractWars">false</Set>,但此方式无法生成work目录的解压文件,也就无法修改其中内容。
  • 确保work模块已正确启用(你已添加该模块),Jetty会将WAR解压到${JETTY_BASE}/work目录下对应webapp的路径中。

内容的提问来源于stack exchange,提问作者Jason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:08:21