Spring Boot应用部署 - JAR包部署瘦身

瘦身部署方案

说明

在日常开发测试环境中,随着业务代码的增加,Maven依赖的jar包也越来越多,导致工程包越来越大。通过阿里云流水线部署时,构建时长逐渐变得不够使用。为了解决这个问题,我们提出了以下瘦身部署方案。

执行

2.1 工程打包jar文件,解压取出非工程依赖的jar(BOOT-INF/lib)

在构建过程中,首先将工程打包为jar文件,然后解压该jar文件,取出其中的非工程依赖的jar包(通常位于BOOT-INF/lib目录下)。

2.2 修改工程pom.xml

修改前
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.3.2.RELEASE</version>
</plugin>
修改后
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.3.2.RELEASE</version>
    <configuration>
        <mainClass>xxx.xxx.Application</mainClass>
        <layout>ZIP</layout>
        <includes>
            <!-- 内部依赖 -->
            <include>
                <groupId>xxx</groupId>
                <artifactId>xxx</artifactId>
            </include>
            <include>
                <groupId>xxx</groupId>
                <artifactId>xxx</artifactId>
            </include>
            <!-- 其他内部依赖... -->
        </includes>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

注意:在<includes>标签中,需要列出所有需要包含在最终jar包中的内部依赖。每次新增Maven依赖时,需要手动更新这个列表。

2.3 部署脚本,增加参数【Dloader.path】

在部署脚本中,需要为Java命令添加-Dloader.path参数,指定非工程依赖jar包的目录。

nohup java -Xms2g -Xmx2g -server -XX:+HeapDumpOnOutOfMemoryError -Dspring.profiles.active=xxx -Dloader.path=${APP_HOME}/lib -jar ${JAR_NAME} > ${JAVA_OUT} 2>&1 &

在这个命令中,${APP_HOME}/lib是非工程依赖jar包的目录,${JAR_NAME}是瘦身后的工程jar包的名称。${JAVA_OUT}是Java输出日志的文件名。

相关推荐

  1. Spring Boot应用部署 - JAR部署

    2024-05-13 07:44:09       16 阅读
  2. spring boot 部署jar jar和lib分离

    2024-05-13 07:44:09       12 阅读
  3. Spring Boot应用部署 - JAR部署

    2024-05-13 07:44:09       12 阅读
  4. Spring Boot应用部署 - JARDocker部署

    2024-05-13 07:44:09       10 阅读
  5. 在服务器上部署SpringBoot项目jar

    2024-05-13 07:44:09       39 阅读
  6. docker 部署 springboot 2.6.13 jar流程笔记

    2024-05-13 07:44:09       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-13 07:44:09       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-13 07:44:09       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-13 07:44:09       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-13 07:44:09       18 阅读

热门阅读

  1. [力扣题解]860. 柠檬水找零

    2024-05-13 07:44:09       15 阅读
  2. 数据结构(五)什么是算法

    2024-05-13 07:44:09       12 阅读
  3. Unity3D安装图文详细步骤

    2024-05-13 07:44:09       10 阅读
  4. 第十三届蓝桥杯国赛

    2024-05-13 07:44:09       10 阅读
  5. OpenCV 光流法总结

    2024-05-13 07:44:09       8 阅读
  6. boto3库调用AWS大模型的封装类

    2024-05-13 07:44:09       11 阅读
  7. 排序算法 下

    2024-05-13 07:44:09       13 阅读
  8. Vue简介

    2024-05-13 07:44:09       12 阅读
  9. Yarn使用

    2024-05-13 07:44:09       10 阅读
  10. TensorFlow基于anaconda3快速构建

    2024-05-13 07:44:09       10 阅读