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

如何在lein-ring生成的uberwar中添加META-INF/context.xml

解决lein-ring生成uberwar时在根目录META-INF放置context.xml的问题

我之前也碰到过这种遗留系统的特殊要求,下面给你两个实用的解决方案,都能帮你把context.xml放到war包根目录的META-INF下:

方案一:通过war资源目录统一管理

这个方法适合需要添加多个war根目录资源的场景,步骤很清晰:

  • 在项目根目录新建一个名为war-resources的文件夹
  • 在这个文件夹内创建META-INF子文件夹,把你的context.xml文件放进这个子文件夹
  • 修改project.clj里的:ring配置块,添加:war-resources-path指定这个目录:
(defproject your-project "1.0.0"
  ;; 你的其他项目配置(依赖、资源路径等)
  :ring {:handler your-project.handler/app
         :war-resources-path "war-resources"})

当你运行lein ring uberwar时,war-resources目录下的所有内容都会被直接复制到war包的根目录,这样context.xml就会出现在/META-INF/context.xml的位置。

方案二:直接指定单个文件映射

如果只需要添加context.xml这一个文件,用这个方法更简洁,不需要额外创建目录:

  • 找到你本地context.xml文件的路径(比如放在项目根目录,或者resources文件夹下)
  • 修改project.clj的:ring配置,在:war-options里添加:extra-files映射:
(defproject your-project "1.0.0"
  ;; 你的其他项目配置
  :ring {:handler your-project.handler/app
         :war-options {:extra-files {"/META-INF/context.xml" "./context.xml"}}})

这里的"./context.xml"是你本地文件的相对路径,根据实际位置调整即可(比如如果文件在src/main/resources下,就写"src/main/resources/context.xml")。

运行lein ring uberwar后,指定的文件就会被放到war包根目录的META-INF文件夹里,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:15:09