环境:若依前后端分离版本,原打包时将所有的依赖jar包放至ruoyi-admin.jar 包中,该包130MB,过大。

需求:为了减少打包更新上传的时间,减少至1.1mb

1、将不常更新的模块jar包分离至lib文件夹

2、将常更新的模块如common、system等打包至jar包中。

在ruoyi-admin的pom文件中添加如下:

            <!--先去除所有的jar包-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layout>ZIP</layout>
<includeSystemScope>true</includeSystemScope>
<includes>
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include> <!--将需要的JAR包保留,如:项目中的 common、framework、system 等更新频繁的模块-->
<include>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
</include>
<include>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-framework</artifactId>
</include>
<include>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-system</artifactId>
</include>
<include>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-quartz</artifactId>
</include>
<include>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-generator</artifactId>
</include>
</includes>
</configuration>
</plugin> <!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>${java.run.main.class}</mainClass>
<useUniqueVersions>false</useUniqueVersions>
</manifest>
</archive>
</configuration>
</plugin> <!-- 分离lib, 拷贝依赖到lib目录 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration> <!-- 依赖包输出目录,将来不打进jar包里 ,将更新不频繁的模块放进lib -->
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<stripVersion>false</stripVersion>
<includeScope>runtime</includeScope>
<!-- 排除如下jar包,将更新频繁的模块不放进lib,放进jar包 -->
<excludeArtifactIds>
ruoyi-common,ruoyi-framework,ruoyi-system,ruoyi-quartz,ruoyi-generator
</excludeArtifactIds>
</configuration> </execution>
</executions>
</plugin>

  

运行时会遇到一个问题:验证码无法显示

Caused by: java.lang.ClassNotFoundException: com.ruoyi.common.config.kaptcha.KaptchaTextCreator

at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)

at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)

at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)

at java.base/java.lang.Class.forName0(Native Method)

at java.base/java.lang.Class.forName(Class.java:315)

at com.google.code.kaptcha.util.ConfigHelper.getClassInstance(ConfigHelper.java:112)

解决方案是重新编译原google 的kaptcha源码,改动一下红框标示之处

便于我使用,我直接将这个类 KaptchaTextCreator 放在了 common中,所以

// properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "com.google.code.kaptcha.text.impl.KaptchaTextCreator");
properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "com.ruoyi.common.config.kaptcha.KaptchaTextCreator");

ruoyi vue 前后端分离版本 打包分离jar包至lib的更多相关文章

  1. 喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了

    折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...

  2. 两个开源的 Spring Boot + Vue 前后端分离项目

    折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...

  3. 解决Django+Vue前后端分离的跨域问题及关闭csrf验证

      前后端分离难免要接触到跨域问题,跨域的相关知识请参:跨域问题,解决之道   在Django和Vue前后端分离的时候也会遇到跨域的问题,因为刚刚接触Django还不太了解,今天花了好长的时间,查阅了 ...

  4. Flask + vue 前后端分离的 二手书App

    一个Flask + vue 前后端分离的 二手书App 效果展示: https://blog.csdn.net/qq_42239520/article/details/88534955 所用技术清单 ...

  5. beego-vue URL重定向(beego和vue前后端分离开发,beego承载vue前端分离页面部署)

    具体过程就不说,是搞这个的自然会动,只把关键代码贴出来. beego和vue前后端分离开发,beego承载vue前端分离页面部署 // landv.cnblogs.com //没有授权转载我的内容,再 ...

  6. SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题

    原文链接:https://segmentfault.com/a/1190000012879279 当前后端分离时,权限问题的处理也和我们传统的处理方式有一点差异.笔者前几天刚好在负责一个项目的权限管理 ...

  7. Springboot+vue前后端分离项目,poi导出excel提供用户下载的解决方案

    因为我们做的是前后端分离项目 无法采用response.write直接将文件流写出 我们采用阿里云oss 进行保存 再返回的结果对象里面保存我们的文件地址 废话不多说,上代码 Springboot 第 ...

  8. SpringBoot+Vue前后端分离项目,在过滤器取值为Null

    SpringBoot+Vue前后端分离项目,在过滤器取值为Null 是因为SessionID的问题,因为axios每次的请求都是一次新的sessionId,所以只需要在main.js下配置如下 axi ...

  9. Vue前后端交互、生命周期、组件化开发

    目录 Vue前后端交互.生命周期.组件化开发 一.Vue用axios与后端交互 二.Vue的生命周期 三.组件化开发 Vue前后端交互.生命周期.组件化开发 一.Vue用axios与后端交互 ​ 如果 ...

  10. 三、vue前后端交互(轻松入门vue)

    轻松入门vue系列 Vue前后端交互 六.Vue前后端交互 1. 前后端交互模式 2. Promise的相关概念和用法 Promise基本用法 then参数中的函数返回值 基于Promise处理多个A ...

随机推荐

  1. Acwing 周赛88 题解

    比赛链接 ·A题 题目描述 给定一个整数\(x\),请你找到严格大于\(x\)且各位数字均不相同的最小整数\(y\). \(1000 \le x \le 9000\) 做法分析 发现数据范围很小,那么 ...

  2. 抢先体验!超强的 Anchor Positioning 锚点定位

    本文,将向大家介绍 CSS 规范中,最新的 Anchor Positioning,翻译为锚点定位. Anchor Position 的出现,极大的丰富了 CSS 的能力,虽然语法稍显复杂,但是有了它, ...

  3. 《Kali渗透基础》02. 基本工具

    @ 目录 1:基本工具 1.1:NetCat 1.1.1:命令参数 1.1.2:示例 1.2:NCat 1.2.1:命令参数 1.2.2:示例 1.3:WireShark 1.4:TCPdump 1. ...

  4. Redis系列21:缓存与数据库的数据一致性讨论

    Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) Redis系列5: ...

  5. 拼多多根据ID取商品详情 API 返回值说明

    ​ item_get-根据ID取商品详情 注册开通 pinduoduo.item_get 公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) se ...

  6. datetime获取当前日期前十二个月份

    from dateutil.parser import parse from dateutil.relativedelta import relativedelta # 当前日期前十二个月 time_ ...

  7. DeferredResult异步处理spring mvc Demo

    一.概述 spring mvc同步接口在请求处理过程中一直处于阻塞状态,而异步接口可以启用后台线程去处理耗时任务.简单来说适用场景: 1.高并发: 2.高IO耗时操作. 二.Demo Spring M ...

  8. 从零开始:Spring Security Oauth2 讲解及实战

    OAuth2.0的四种授权模式: https://blog.csdn.net/weixin_30849403/article/details/101958273 1.授权服务配置: 配置一个授权服务, ...

  9. DAY005_异或运算

    运算规则 二进制:相同为0 相异为1 十进制:相同为0 任何数字和0异或都是它本身 不利用额外变量交换两个数 数组中一种数字出现了奇数次,其他数都出现了偶数次,怎么得到这个出现了奇数次的数 将所有的数 ...

  10. 云原生(docker jenkins k8s)docker篇

    docker (1)架构 ● Docker_Host: ○ 安装Docker的主机 ● Docker Daemon: ○ 运行在Docker主机上的Docker后台进程 ● Client: ○ 操作D ...