Springboot、maven 打包瘦身,去除依赖的jar【springboot外置jar、配置文件】

背景

分布式项目、微服务项目一般都会引用许多公共依赖,每次maven打出来的jar包上百M,不利于运维工作、可以在打包时隔离项目本身的jar和依赖的公用jar包,这样项目本身包可以做到很精简。

本文主要把项目依赖的包和项目的配置文件在打包时导出到本身springboot 的jar包 外。

本文项目中导入依赖用到了两种方式,一是直接通过maven库,二是通过导入本地第三方jar

配置

全部配置

我在系统根目录下创建了一个boot的文件夹,mvn打包之后会在boot下创建名称为lib、boot-demo的两个文件夹,lib用来存放所有依赖的jar,boot-demo用来存放springboot的jar和application.properties配置文件 

用到了

maven-compiler-plugin:负责编译源码

spring-boot-maven-plugin :负责编译springbootjar

maven-jar-plugin:负责把项目依赖的jar写到MANIFEST.MF文件

maven-dependency-plugin:负责导出项目依赖的jar

maven-resources-plugin:负责导出项目配置文件


    4.0.0

    com.luck
    boot-demo
    1.0-SNAPSHOT

    boot-demo

    
        /boot
        
        . ../lib/mytest-1.0.jar
        ${env.JAVA_HOME}
        UTF-8
        1.8
    

    
        
            
                org.springframework.boot
                spring-boot-dependencies
                2.3.0.RELEASE
                pom
                import
            
        
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            com.luck
            mytest
            1.0
            system
            ${basedir}/lib/otherjar.jar
        
    
    
        
            
                src/main/java
                
                    **/*.xml
                
            
            
                src/main/resources
                
                    **/*.*
                
                
                
                    *.properties
                
            
            
                src/main/${package.environment}
                
                    **/*.*
                
                
                    *.properties
                
                ${project.basedir}/target/classes
                true
            
        
        
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.1
                
                    1.8
                    1.8
                    UTF8
                    
                        ${java.home}\jre\lib\rt.jar;${java.home}\jre\lib\jce.jar
                    
                
            
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                    com.luck.MainApplication
                    
                    ZIP
                    
                    
                         
                             nojar
                             nojar
                         
                    
                    
                    ${global-jar-output}/${project.artifactId}
                
                
                    
                        
                            repackage
                        
                    
                
            
            
                org.apache.maven.plugins
                maven-jar-plugin
                
                    
                        
                        
                            true
                            ../lib/
                            false
                        
                        
                        
                            ${system-jar-classpath}
                        
                    
                
            
            
            
                org.apache.maven.plugins
                maven-dependency-plugin
                
                    
                        copy-lib
                        package
                        
                            copy-dependencies
                        
                    
                
                 
                     ${global-jar-output}/lib
                     false
                     false
                     false
                 
            
            
            
                org.apache.maven.plugins
                maven-resources-plugin
                
                    
                        copy-config
                        package
                        
                            copy-resources
                        
                        
                            
                                
                                    src/main/resources
                                    
                                        *.properties
                                    
                                
                            
                            ${global-jar-output}/${project.artifactId}
                        
                    
                
            
        
    

    
        
            test
            
                res-test
            
        
        
            dev
            
                true
            
            
                resources
            
        
    

生成 

Springboot、maven 打包瘦身,去除依赖的jar【springboot外置jar、配置文件】_第1张图片 

 

 Springboot、maven 打包瘦身,去除依赖的jar【springboot外置jar、配置文件】_第2张图片

 Springboot、maven 打包瘦身,去除依赖的jar【springboot外置jar、配置文件】_第3张图片

 

 

Java中读取application.properties文件

java读取外部配置文件需要用到

org.springframework.core.io.ClassPathResource.ClassPathResource这个类

InputStream in = new ClassPathResource("application.properties").getInputStream()

参考文章

SpringBoot 部署 Jar 文件,瘦身优化指南 ! - 知乎

你可能感兴趣的:(spring,boot,maven,jar)