1、背景
项目使用maven多模块构建,线上使用tomcat发布。一个模块为maven web项目,其余均为非web。发布时其余几个模块作为web模块的依赖引入,一起打包发布。
2、问题
使用idea+tomcat进行开发,实现热部署功能。tomcat发布过程中可选择war 和 war exploded两种模式。开发环境使用war exploded实现热部署。
问题1:研发环境只有web模块一个war exploded包可选,配置好tomcat启动后查看发布包里面内容依赖的几个子模块的class及配置文件均未打包进去进行发布。
问题2:线上环境使用war打包,在idea命令行窗口构建完成后,生成的war包将子模块以jar包的形式放到lib中进行发布。会造成子模块中的bean无法初始化,且不好进行增量抽取上线。
3、解决办法
针对问题1:
在idea的tomcat配置发布选项页中选择对应的war exploded包后,选择状态下点击编辑按钮。如下图红色按钮所示,在编辑窗口中选择图2中1处的classes,会显示当前web模块(3标识,其余为添加后的内容)的编译输出,全部模块在右侧区域显示。点击添加(2标识),弹出的图3所示内容选择Module Output,选中其他需要加入的module即可。