解决Springboot打包jar过大问题

    25

背景

最近Jenkins打包springboot项目的jar包都80M以上,在部署时候,就算压缩以后也很大,经过资料查找,最终采用瘦包部署

项目改造

  1. 修改pom.xml文件 在build-plugins-plugin下的spring-boot-maven-plugin添加一个依赖
<!--pom.xml-->
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.springframework.boot.experimental</groupId>
                        <artifactId>spring-boot-thin-layout</artifactId>
                        <version>1.0.28.RELEASE</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>
  1. 执行打包命令mvn clean package发现jar包只有一百多KB 打包后的jar包只包含了我们自己编写的代码,依赖都不在jar包里,那么我们如何去运行它,让他去找到依赖呢。

运行jar包

我们有2种方式在服务器上运行jar包

直接运行

  1. 会把依赖下载到~/.m2/repository目录
    java -jar my-app.jar
  2. 我们可以指定依赖下载到当前目录
    java -Dthin.root=. -jar my-app.jar
  3. 我们可以在程序启动之前手动预热
    java -Dthin.dryrun=true -Dthin.root=. -jar my-app.jar

手动上传依赖

我们使用插件在本地把依赖构建好

<!--pom.xml-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.springframework.boot.experimental</groupId>
                        <artifactId>spring-boot-thin-layout</artifactId>
                        <version>1.0.28.RELEASE</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot.experimental</groupId>
                <artifactId>spring-boot-thin-maven-plugin</artifactId>
                <version>1.0.28.RELEASE</version>
                <executions>
                    <execution>
                        <id>resolve</id>
                        <goals>
                            <goal>resolve</goal>
                        </goals>
                        <inherited>false</inherited>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
  1. target/thin/root/repository目录上传到服务器

  2. 运行命令java -Dthin.root=. -jar my-app.jar即可

评论区
共有评论 0
暂无评论