如何在IntelliJ使用Tomcat时保持WAR文件持续运行?
解决IntelliJ关联Tomcat时webapps目录下独立WAR无法访问的问题
问题场景
- Tomcat路径为
/Users/myuser/Downloads/apache-tomcat-9.0.53,IntelliJ的Tomcat配置中「Tomcat Home」和「Tomcat base directory」均指向该路径 - 两个极少变动的WAR文件(
sec-web-services.war、documents-web-services.war)放入Tomcat的webapps目录后,启动IntelliJ关联的Tomcat项目时无法访问这两个WAR;停止IntelliJ的Tomcat后恢复正常 - 当前IntelliJ的Tomcat部署列表包含这两个WAR的
exploded版本,每次构建都需打包部署,耗时较长
解决方案
方案1:移除IntelliJ中两个WAR的exploded部署配置
- 打开IntelliJ的运行配置:点击顶部菜单栏「Run」→「Edit Configurations...」
- 在左侧列表选中你的Tomcat服务器配置,切换到「Deployment」标签页
- 找到
sec-web-services:war exploded和documents-web-services:war exploded两项,选中后点击右侧的减号-删除 - 保存配置,重新启动Tomcat
原理:IntelliJ启动关联Tomcat时,默认只部署配置列表内的应用,会跳过Tomcat自身的webapps自动部署。移除这两个WAR的配置后,Tomcat会自动加载webapps目录下的原始WAR文件,同时IntelliJ仅处理需要频繁修改的项目,互不干扰。
方案2:将两个WAR配置为Tomcat外部独立应用
如果不想把WAR放在webapps目录,可直接在Tomcat配置中声明:
- 打开Tomcat安装目录下的
conf/server.xml文件 - 在
<Host>标签内添加两个<Context>节点,指定WAR路径和访问上下文:
<Context docBase="/Users/myuser/path/to/sec-web-services.war" path="/sec-web-services" reloadable="false" /> <Context docBase="/Users/myuser/path/to/documents-web-services.war" path="/documents-web-services" reloadable="false" />
- 重启Tomcat后,这两个应用会独立加载,不受IntelliJ部署操作影响
- 同时在IntelliJ的Tomcat部署配置中删除这两个WAR的
exploded项
方案3:开启IntelliJ与Tomcat webapps目录的合并部署
- 打开IntelliJ的Tomcat服务器配置,切换到「Server」标签页
- 找到「Deployment options」区域,勾选「Deploy applications configured in Tomcat instance」
- 保存配置后重启Tomcat
注意:需确保IntelliJ部署的应用与webapps目录下的应用没有上下文路径冲突,避免访问异常。
内容的提问来源于stack exchange,提问作者Daniela Morais
相关产品推荐
相关产品推荐

