若依类项目spring boot多模块打包优化实践

笔者最近工作的时候,接到一个地产集团小程序的研发任务,之前也没有相关经验,于是就从网上找了一个类似的项目来改,就是uniapp+若依 开发租房小程序 : 租房小程序,uniapp+若依,易于维护和扩展 (gitee.com), 这个项目来改。后端用的是小程序配套的,指路地址开源字节快速开发平台: 一直想做一款追求极致用户体验的快速开发平台,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间对若依框架进行扩展写了一套快速开发系统。如此有了开源字节快速开发平台。该平台基于 Spring Boot + MyBatis + Vue & Element ,包含微信小程序 & Uniapp, Web 报表、三方登录、支付、短信、邮箱、OSS... (gitee.com)。

站点巨人的肩膀上,的确很快,一周就搞出来了。但是遇到一个问题。就是后端打的jar包太大了,有80M,导致使用jenkins持续集成工具,传输jar包到目的主机,要花费10来分钟(主要是跨网络,研发主机又太差,带宽只有1Mb)。 想想修改个东西,点击运行,然后等个20分钟才生效,项目急的情况,还不给憋死。怎么办呢?解决办法当然是缩小jar的大小,把第三方依赖分离出主包

思路已经有了,怎么解决百度了。网上很多文章,但是都没有一个比较靠谱的。我就记录下来。首先说明,若依框架是一个多模块的spring boot 工程。工程结构如下

若依类项目spring boot多模块打包优化实践_第1张图片

source-admin是启动模块,修改它的pom包的build部分,先上代码,主要是修改有三处:

  1. spring-boot-maven-plugin插件的配置:把项目内的自己的代码都包含到主jar包内

  1. 增加了maven-jar-plugin插件的配置:指定了启动类,不然会找不到主类

  1. 增加了maven-dependency-plugin插件:用于复制第三方依赖。

需要说明的是kaptcha包比较特殊,如果不放在主jar包下,获取验证码的时候,会报ERROR c.v.f.w.e.GlobalExceptionHandler - [handleException,83] - Invalid value 'KaptchaTextCreator' for config parameter 'kaptcha.textproducer.impl,错误,网上说的解决办法是修改jar包,太麻烦,直接打包到主包里头去,不就完事了,所以程序员要学会思考,不能照抄。


        
            
                org.springframework.boot
                spring-boot-maven-plugin
                2.1.1.RELEASE
                
                    true 
                    
                        
                            source-framework
                            cn.source
                        
                        
                            source-system
                            cn.source
                        
                        
                            source-quartz
                            cn.source
                        
                        
                            source-generator
                            cn.source
                        
                        
                            source-common
                            cn.source
                        
                        
                            source-cms
                            cn.source
                        
                        
                            source-house
                            cn.source
                        
                        
                            source-im
                            cn.source
                        

                        
                            source-mall
                            cn.source
                        
                        
                            source-convention
                            cn.source
                        

                        
                            com.github.penggle
                            kaptcha
                        

                    
                
                
                    
                        
                            repackage
                        
                    
                
            

            
                org.apache.maven.plugins
                maven-war-plugin
                3.1.0
                
                    false
                    ${project.artifactId}
                
            


            
                org.apache.maven.plugins
                maven-jar-plugin
                
                    
                        
                            true
                            lib/
                            cn.source.RuoYiApplication
                        
                    
                
            

            
            
                org.apache.maven.plugins
                maven-dependency-plugin
                
                    
                        copy-dependencies
                        package
                        
                            copy-dependencies
                        
                        
                            
                            ${project.build.directory}/lib
                            false
                            false
                            true
                            
                            source-framework, source-system, source-quartz, source-generator,
                                source-common, source-cms, source-house, source-im, source-mall, source-convention,kaptcha
                            
                        
                    
                
            
        
        ${project.artifactId}
    

打包后的效果,主包只剩下800多K了,秒传了。启动命令仍然不变。还是用java -jar方式。

若依类项目spring boot多模块打包优化实践_第2张图片

使用jenkins的传输lib目录下的文件,也贴一下,供参考:

若依类项目spring boot多模块打包优化实践_第3张图片

你可能感兴趣的:(Java,maven,java,jenkins,spring,boot)