springboot打包时依赖jar和项目jar分开打包;jar包瘦身

news2024/12/23 6:12:56

概述

最近感觉项目在部署时时jar包传输太慢了;
看了下jar包内容,除了项目代码,其余大部分都是依赖jar
平时改动较多的只是项目代码,依赖jar改动比较少;
所以就在想能不能分开打包;这样只部署项目代码的改动就快多了;

我的jdk版本:17
springboot版本:3.1.2

分开打包

将依赖的jar包都copy到项目执行jar外面路径中;
我这边copy到项目jar的同级目录中,也可以copy到其他路径

<!--拷贝依赖到jar外面的lib目录-->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>                <!--指定的依赖路径-->
                <outputDirectory>
                    ${project.build.directory}/lib
                </outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

然后打包项目jar;有2种打包方式;

项目jar打包方式一:
依赖jar前加上class path;我上面的依赖jar的存放路径和项目jar在同一级下,所以这里直接加上路径lib即可;

启动的时候直接启动即可

java -jar xxx.jar
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-jar-plugin</artifactId>
   <version>${maven-jar-plugin.version}</version>
   <configuration>
       <archive>
           <manifest>
               <!--addClasspath表示需要加入到类构建路径-->
               <addClasspath>true</addClasspath>
               <!--classpathPrefix指定生成的Manifest文件中Class-Path依赖lib前面都加上路径,构建出lib/xx.jar-->
               <classpathPrefix>lib/</classpathPrefix>
               <mainClass>org.qps.QpsAdminApplication</mainClass>
           </manifest>
       </archive>
   </configuration>
</plugin>

在这里插入图片描述

项目jar打包方式二:
依赖jarcopy方式不变,调整打包插件和启动方式;但是我这边没有成功;
打包后依赖的确是分离了;但是启动的时候一直提示在依赖lib下找不到主类

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>${spring-boot.version}</version>
    <configuration>
        <executable>true</executable>
        <!-- 指定layout = ZIP;打包的时候就不会把依赖的jar一起当进去 -->
        <layout>ZIP</layout>
        <mainClass>org.qps.QpsAdminApplication</mainClass>
        <!--解决windows命令行窗口中文乱码-->
        <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
        <!--只包含自己-->
        <includes>
            <include>
                <groupId>${groupId}</groupId>
                <artifactId>${artifactId}</artifactId>
            </include>
                
            <!--依赖jar不打进项目jar包中-->
            <!--<include>
                 <groupId>nothing</groupId>
                 <artifactId>nothing</artifactId>
            </include>-->
        </includes>
        <!--不包含哪些-->
        <!--<excludeGroupIds>-->
        <!--com.hundsun.jrescloud,-->
        <!--org.springframework.boot,-->
        <!--org.springframework-->
        <!--</excludeGroupIds>-->
    </configuration>

    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

参考博文
https://www.cnblogs.com/kingsonfu/p/11431743.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1153505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SSM的国外摇滚乐队交流和周边售卖系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

【设计模式】第12节:结构型模式之“外观模式”

一、简介 门面模式&#xff0c;也叫外观模式&#xff0c;英文全称是Facade Design Pattern。门面模式为子系统提供一组统一的接口&#xff0c;定义一组高层接口让子系统更易用。 目的&#xff1a;简化复杂系统的交互方式 特点&#xff1a;提供一个统一的交互接口 二、UML类…

vue-devtools 下载

创建空文件夹&#xff0c;然后 cmd 运行&#xff1a; npm install vue-devtools 然后打开在node_modules->vue-devtools->vender->manifest.json文件 persistent:false 改成 true 最后把vender文件夹拖到chrome浏览器扩展中 提示小消失

【Vue】vant上传封装方法,van-uploader上传接口封装

项目场景&#xff1a; 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 在移动端项目中&#xff0c;使用vant组件上传&#xff0c;但是vant没有上传方法&#xff0c;需要自己写。 html代码 <van-uploader v-model"fileList" :max-size"50…

腾讯云双十一活动,海量云产品优惠,上云正当时!

腾讯云2023年双十一推出了一场盛大的促销活动&#xff0c;活动涵盖了各种产品优惠&#xff0c;包括云服务器、数据库、存储、网络、安全、企业应用等各个领域的产品&#xff0c;让用户享受全方位的优惠&#xff01; 一、腾讯云双11活动入口 活动地址&#xff1a;https://txy.i…

基于MFC的串口通信(Mscomm)

1、串口通信的概述&#xff1a; 串口是一种重要的通信资源&#xff0c;例如鼠标口、USB接口都是串口。串行端口是CPU和串行设备间的编码转换器。当数据从CPU经过端口发送出去的时候&#xff0c;字节数据会被转为串行的位&#xff0c;在接收数据时&#xff0c;串行的位被转换为…

Apache Dolphinscheduler如何不重启解决Master服务死循环

个人建议 Apache Dolphinscheduler作为一个开源的调度平台&#xff0c;目前已经更新到了3.X版本&#xff0c;4.0版本也已经呼之欲出。3.0版本作为尝鲜版本&#xff0c;新添加了许多的功能&#xff0c;同时也存在非常多的隐患&#xff0c;本人使用3.0版本作为生产调度也踩了很多…

开放式耳机和骨传导耳机哪个好,开放式耳机和骨传导耳机区别

虽然开放式耳机和骨传导耳机两者都能够听到周边的声音&#xff0c;但开放式耳机和骨传导耳机区别还是挺大的&#xff0c;下面让我来给大家详细的分析一下两者的区别。 1、音频传导方式 开放式耳机&#xff1a;开放式耳机设计允许声音从耳机的驱动单元透过外部空气传播到听觉器…

浅谈搜索展现层场景化技术-tanGo实践

作者 | 搜索技术平台 导读 本文为搜索展现层相关技术&#xff0c;主线会先通过介绍搜索阿拉丁的产品形态&#xff0c;让读者初步了解什么是阿拉丁&#xff0c;及相关展现概念。之后会聚焦场景化产品&#xff0c;场景化是搜索构建沉浸式完美体验&#xff08;重新组合整页阿拉丁和…

Win10系统 如何使用cmd脚本命令,连接到指定WIFI并免手工输入WIFI密码连接?

环境&#xff1a; Win10 专业版 19041 WiFi 名称&#xff1a;LTG 问题描述&#xff1a; Win10系统 如何使用cmd脚本命令&#xff0c;连接到指定WIFI并免手工输入WIFI密码连接&#xff1f; 解决方案&#xff1a; 1.找一台已经连接过LTG这个wifi的电脑&#xff0c;导出.xlm配…

EasyRecovery16专业版激活码序列号

当不小心将回收站的文件删除了怎么办&#xff1f;想找回但是不知道怎么找回需要的数据文件&#xff1f;别担心今天小编就为大家介绍一款非常专业的电脑数据文件恢复工具&#xff0c;easyrecovery14是由Ontrack专为电脑用户推出的一款专业的数据恢复软件&#xff0c;这款软件功能…

opencv 连通域操作示例代码记录connectedComponentsWithStats()函数示例

void CrelaxMyFriendDlg::OnBnClickedOk() {hdc this->GetDC()->GetSafeHdc();// TODO: 在此添加控件通知处理程序代码string imAddr "c:/Users/actorsun/Pictures/";string imAddr1 imAddr"rice.png";Mat relax1, positive;relax1 imread(imAdd…

一文获取鼎捷医疗器械行业数智化合规敏态方案

医疗器械产业是关乎国计民生的重要产业&#xff0c;高端医疗器械更是“国之重器”。为加强医疗器械的监督管理&#xff0c;提升行业质量和安全整体水平&#xff0c;我国出台了《医疗器械监督管理条例》、《医疗器械召回管理办法》、《医疗器械临床试验质量管理规范》、《医疗器…

【单点登陆导致cookie覆盖问题】

背景&#xff1a; 使用oauth2.0单点登陆进去不同服务器的同一系统。 同一浏览器存储的COOKIE名称&#xff0c;COOKIE PATH COOKIE DOMAIN一致&#xff0c;会认为是同一个COOKIE 当单点登陆进去c1平台后&#xff0c;前端浏览器会存入一个cookie,而后当单点登陆进入c2平台后&…

Android DSL

文章目录 Android DSL概述使用DSL构建HTML代码下载 Android DSL 概述 Kotlin DSL&#xff08;领域特定语言&#xff09;是一种使用 Kotlin 语言编写的&#xff0c;用于解决特定问题领域的语言。DSL 使得代码更易读、易写&#xff0c;因为它的语法和领域问题的语法更接近。Kot…

2021-arxiv-LoRA Low-Rank Adaptation of Large Language Models

2021-arxiv-LoRA Low-Rank Adaptation of Large Language Models Paper: https://arxiv.org/abs/2106.09685 Code: https://github.com/microsoft/LoRA 大型语言模型的LoRA低秩自适应 自然语言处理的一个重要范式包括对通用领域数据的大规模预训练和对特定任务或领域的适应。…

elementUI树节点全选,反选,半选状态

// <template>部分 <div class"check-block"><el-divider></el-divider><el-checkbox :indeterminate"indeterminate" v-model"checkAll" change"handleCheckAllChange">全选</el-checkbox><e…

足底筋膜炎怎么治疗最有效

足底筋膜炎的几种症状表现&#xff1a; 1、足跟的内侧足底处的疼痛和压痛。 2、早晨起床后疼痛和僵硬明显&#xff0c;活动后痛感逐渐减轻。 3、光脚或用脚尖跑步、走路都会加剧疼痛。 4、疼痛随着跑步、长时间走路或站立等负重活动而加剧。轻度时可能会以足底僵硬为主&…

可直接在Maya实时表情捕捉的面捕头盔,为3D模型表情制作提速!

面捕表情捕捉头盔可以用于捕捉真人的面部表情&#xff0c;从微小的皱纹到大的脸部肌肉运动&#xff0c;通过面捕头盔&#xff0c;都可以实时转化到虚拟角色上。 在元宇宙浪潮下&#xff0c;围绕虚拟人的应用场景和时长变得愈加多元&#xff0c;人们对虚拟人的精度不再仅限于简…

01.CentOS7静默安装oracle11g

CentOS7静默安装oracle11g 一、下载Oracle11g安装包二、开始安装oracle11g三、配置Oracle监听程序四、添加数据库实例五、设置开机启动六、登录后解除锁定 一、下载Oracle11g安装包 下载链接&#xff1a;https://pan.baidu.com/s/1gcLMFGX7-8ju7OoFOFLzQA 提取码&#xff1a;6…