笔者最近工作的时候,接到一个地产集团小程序的研发任务,之前也没有相关经验,于是就从网上找了一个类似的项目来改,就是uniapp+若依 开发租房小程序 : 租房小程序,uniapp+若依,易于维护和扩展 (gitee.com), 这个项目来改。后端用的是小程序配套的,指路地址开源字节快速开发平台: 一直想做一款追求极致用户体验的快速开发平台,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间对若依框架进行扩展写了一套快速开发系统。如此有了开源字节快速开发平台。该平台基于 Spring Boot + MyBatis + Vue & Element ,包含微信小程序 & Uniapp, Web 报表、三方登录、支付、短信、邮箱、OSS... (gitee.com)。
站点巨人的肩膀上,的确很快,一周就搞出来了。但是遇到一个问题。就是后端打的jar包太大了,有80M,导致使用jenkins持续集成工具,传输jar包到目的主机,要花费10来分钟(主要是跨网络,研发主机又太差,带宽只有1Mb)。 想想修改个东西,点击运行,然后等个20分钟才生效,项目急的情况,还不给憋死。怎么办呢?解决办法当然是缩小jar的大小,把第三方依赖分离出主包
思路已经有了,怎么解决百度了。网上很多文章,但是都没有一个比较靠谱的。我就记录下来。首先说明,若依框架是一个多模块的spring boot 工程。工程结构如下
source-admin是启动模块,修改它的pom包的build部分,先上代码,主要是修改有三处:
spring-boot-maven-plugin插件的配置:把项目内的自己的代码都包含到主jar包内
增加了maven-jar-plugin插件的配置:指定了启动类,不然会找不到主类
增加了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方式。
使用jenkins的传输lib目录下的文件,也贴一下,供参考: