IDEA MAVEN项目多个module,使用tomcat热部署

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即可。

IDEA MAVEN项目多个module,使用tomcat热部署_第1张图片

                                                                                     图1

IDEA MAVEN项目多个module,使用tomcat热部署_第2张图片

                                                                                                  图2

                           IDEA MAVEN项目多个module,使用tomcat热部署_第3张图片

                                                                                                   图3

针对问题2:

使用maven-dependency-plugin插件,对依赖子module在构建时进行unpack将jar包内容输出到指定目录即可。实现方式为在web module的pom.xml中新增如下配置。其中groupId,artifactId,version按照依赖的子module实际名称配置即可。outputDirectory指定解包的目录;includes指定需要输出到outputDirectory中的文件类型。其他配置及使用可自行查阅官方教程--》maven-dependency-plugin插件使用。


    org.apache.maven.plugins
    maven-dependency-plugin
    3.1.1
    
        
            generate-resources
            
                unpack
            

            
                
                    
                        X.Y
                        aaa-bbb
                        ${project.version}
                        jar
                        true
                        .\target\classes
                        **/*.class,**/*.xml,**/*.properties,**/*.txt
                    
       
                

            

        

    

 

你可能感兴趣的:(Java,Maven,dependency,IDEA,多个module打包,tomcat热部署)