首页 > 其他分享 >ruoyi vue 前后端分离版本 打包分离jar包至lib

ruoyi vue 前后端分离版本 打包分离jar包至lib

时间:2023-11-28 12:56:32浏览次数:37  
标签:java lib 分离 jar ruoyi maven common com


环境:若依前后端分离版本,原打包时将所有的依赖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");
 

 

标签:java,lib,分离,jar,ruoyi,maven,common,com
From: https://www.cnblogs.com/zjp8023/p/17861687.html

相关文章

  • jar包上传到私有maven仓库
    切换到maven安装的bin目录打开cmd窗口执行命令./mvndeploy:deploy-file-Dfile=CNERTICDecoder-1.0.2.jar-DgroupId=cn.com.cennavi.decoder-DartifactId=out-CNERTICDecoder-Dversion=1.0.2-Dpackaging=jar-Durl=http://xxx/nexus/content/repositories/thirdparty-Dre......
  • C/C++ Zlib实现文件压缩与解压
    在软件开发和数据处理中,对数据进行高效的压缩和解压缩是一项重要的任务。这不仅有助于减小数据在网络传输和存储中的占用空间,还能提高系统的性能和响应速度。本文将介绍如何使用zlib库进行数据的压缩和解压缩,以及如何保存和读取压缩后的文件。zlib是一个开源的数据压缩库,旨在提......
  • MPV进阶使用:LIBMPV
    一、介绍mpv不仅提供了IPC的使用方式,还提供了函数库,方便将mpv嵌入其他程序。EMBEDDINGINTOOTHERPROGRAMS(LIBMPV)mpvcanbeembeddedintootherprogramsasvideo/audioplaybackbackend.Therecommendedwaytodosoisusinglibmpv.Seelibmpv/client.hinthe......
  • matplotlib之常见图像种类
    Matplotlib是一个用于绘制图表和数据可视化的Python库。它支持多种不同类型的图形,以满足各种数据可视化需求。以下是一些Matplotlib支持的主要图形种类:折线图(LinePlot):用于显示数据随时间或其他连续变量的变化趋势。plt.plot() 函数用于创建折线图。 散点图(S......
  • WSL安装软件报错/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbo
    原因/usr/lib/wsl/lib/目录下都是文件而不是链接,且该目录只读,需要在其他目录操作解决cd/usr/lib/wslsudomkdirlib2sudoln-slib/*lib2更改wsl配置文件sudovim/etc/ld.so.conf.d/ld.wsl.conf将/usr/lib/wsl/lib改为/usr/lib/wsl/lib2测试修改是否生效sudo ldco......
  • Could not load dynamic library 'libnvinfer.so.7' 解决方法
    1.首先安装TensorRTpipinstalltensorrt2.找到tensorrt_libs目录,一般在~/.local/lib/python3.10/site-packages/tensorrt_libs/。目录下可以看到libnvinfer.so.8等文件注:有些教程说的是tensorrt目录,但是我在这个目录下面没找到文件3.创建symbollinks,这样TensorFlow才能找到......
  • 解决非root用户安装软件中cannot create regular file `/usr/local/lib/libz.a‘: Per
    解决非root用户安装软件中cannotcreateregularfile`/usr/local/lib/libz.a':Permissiondenied举例解决办法 举例比如我现在要安装一个软件叫zlib,安装过程如下:wgethttp://zlib.net/zlib-1.2.11.tar.gztarzxfzlib-1.2.11.tar.gzcdzlib-1.2.11./configure......
  • No package 'glib-2.0' found
     001、./configure命令报错如下: Nopackage'glib-2.0'found 002、查找改文件[root@pc1exonerate-2.4.0]#find/-name"glib-2.0.pc"##只在conda环境中存在/root/anaconda3/pkgs/glib-2.69.1-he621ea3_2/lib/pkgconfig/glib-2.0.pc/root/anaconda3/li......
  • 如何在 CentOS 6.3 上安装 libboost-devel
    您需要安装该boost-devel软件包。包描述:boost-devel.x86_64:BoostC++头文件和共享开发库yuminstallboost-develRunCodeOnline(SandboxCodePlaygroud)  ......
  • Xcode 15 and iOS 17 - Error: DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY
    热烈欢迎,请直接点击!!!进入博主AppStore主页,下载使用各个作品!!!注:博主将坚持每月上线一个新app!!Podfile文件添加如下内容后,重新podinstall:post_installdo|installer|#fixxcode15DT_TOOLCHAIN_DIR-removeafterfixoficially-https://github.com/CocoaPods/CocoaPod......