Spring boot项目打的jar包太大,如何让他瘦下来

  1. 为什么会导致jar变大

SpringBoot 部署起来虽然简单,如果服务器部署在公司内网,速度还行,但是如果部署在公网(阿里云等云服务器上),部署起来实在头疼:编译出来的 Jar 包很大,如果工程引入了许多开源组件(SpringCloud 等),那就更大了。

这个时候如果想要对线上运行工程有一些微调,则会非常的痛苦。

我们先来看看一般情况下打包出来的jar包

Tomcat 在部署 Web 工程的时候,可以进行增量更新,SpringBoot 也是可以的~

SpringBoot 编译出来的 Jar 包中,磁盘占用大的,是一些外部依赖库(jar 包),这些依赖包在lib下面.

进入项目工程根目录,执行 mvn clean install 命令,得到的 Jar 包,用压缩软件打开,目录结构如下:


    
        
            org.springframework.boot
            spring-boot-maven-plugin
            
                com.App
                ZIP
            
            
                
                    
                        repackage
                    
                
            
        
    

Spring boot项目打的jar包太大,如何让他瘦下来_第1张图片

2.将lib抽离出来 

2.1打无依赖jar包


    
        
            org.springframework.boot
            spring-boot-maven-plugin
            
                true
                ZIP
                
                    
                        
                        nothing
                        nothing
                    
                
            
        
    

Spring boot项目打的jar包太大,如何让他瘦下来_第2张图片

输出依赖包到指定位置,后期可以配置在maven插件中

mvn dependency:copy-dependencies -DoutputDirectory=D:\javatest\lib  -DincludeScope=runtime

指定lib位置,启动jar

java -Dloader.path=lib/ -jar activiti-0.0.1-SNAPSHOT.jar

3,父工程,保留核心代码

只包含模块核心代码,第三方的依赖包全部打入到lib中


    ${artifactId}
    
        
        
            
            org.springframework.boot
            spring-boot-maven-plugin
            
                com.jheng.system.SystemApplication
                true
                ZIP
                
                
                    
                        jheng-common-core
                        jheng
                    
                    
                        jheng-api
                        jheng
                    
                    
                        jheng-common-security
                        jheng
                    
                    
                        jheng-common-redis
                        jheng
                    
                

            
            
                
                    
                        repackage
                    
                
            
        
        
        
            org.apache.maven.plugins
            maven-dependency-plugin
            
                
                    copy-dependencies
                    package
                    
                        copy-dependencies
                    
                    
                        
                        ${project.build.directory}/lib
                        false
                        false
                        true
                        
                        jheng-common-core,jheng-api,jheng-common-security,jheng-common-redis
                    
                
            
            3.2.0
        
    

项目组成:

Spring boot项目打的jar包太大,如何让他瘦下来_第3张图片

4,docker启动

需要将lib拷贝到镜像中.

FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY *.jar /myapp.jar
COPY lib /lib
ENTRYPOINT ["java","-Dloader.path=/lib/","-jar","/myapp.jar"]

你可能感兴趣的:(增量打包,个人博客,jar,java,maven,spring)