Springboot项目瘦身之如何将jar包与lib依赖分开打包

将jar包与lib依赖分开打包

方法一:项目和依赖完全分离

maven-jar-plugin 负责生成 jar 文件(jar文件中不包含如何依赖),并为 jar 文件的 manifest.mf 文件配置相关内容;maven-dependency-plugin 插件用于在构建时将项目的运行时依赖项复制到指定目录。

部署项目时,生产的jar文件要和lib依赖包在同一目录下。


        
        ${project.artifactid}
        
            
                org.apache.maven.plugins
                maven-jar-plugin
                
                    
                        
                        false
                        
                            true
                            lib/
                            
                            你的启动类路径
                            
                            false
                        
                    
                
            

            
            
                org.apache.maven.plugins
                maven-dependency-plugin
                
                    
                        copy-lib
                        package
                        
                            copy-dependencies
                        
                        
                            
                            ${project.build.directory}/lib
                            
                            false
                            
                            false
                            
                            runtime
                            
                            common,coo
                        
                    
                
            
        
    

方法二:部分依赖打入jar文件

  • maven-jar-plugin 插件用于生成主 jar 文件,并配置 manifest.mf 文件中的相关信息;
  • maven-shade-plugin 插件用于将一些特定的依赖项(例如 common 和 coo)打包到主 jar 文件中,通常用于创建一个"uber jar"(即包含所有依赖的 jar);
  • maven-dependency-plugin 插件用于在构建过程中将除指定依赖(如 common 和 coo)外的其他所有运行时依赖复制到 lib/ 目录;

因为maven-jar-plugin会生成一个无依赖的jar文件,所以不需要的情况下可以删除掉,maven-antrun-plugin 插件用于执行一些额外的任务,比如删除不需要的 jar 文件。

部署项目时,生产的jar文件要和lib依赖包在同一目录下。


        
            
            
                org.apache.maven.plugins
                maven-jar-plugin
                
                    
                        default-jar
                        package
                        
                            jar
                        
                    
                
                
                    
                        
                        true
                        
                            
                            true
                            
                            lib/
                            
                            你的启动类路径
                            
                            false
                        
                    
                
            

            
            
                org.apache.maven.plugins
                maven-shade-plugin
                
                    
                        
                        package
                        
                            
                            shade
                        
                        
                            
                                
                                
                                    com.test:common
                                    com.test:coo
                                
                            
                            
                            false
                            
                            false
                            
                            ${project.artifactid}
                        
                    
                
            

            
            
                org.apache.maven.plugins
                maven-dependency-plugin
                
                    
                        
                        copy-lib
                        
                        package
                        
                            
                            copy-dependencies
                        
                        
                            
                            ${project.build.directory}/lib
                            
                            false
                            
                            false
                            
                            runtime
                            
                            common,coo
                        
                    
                
            

            
            
                org.apache.maven.plugins
                maven-antrun-plugin
                
                    
                        
                        package
                        
                            
                                
                                
                            
                        
                        
                            
                            run
                        
                    
                
            
        
    

jar文件和lib打包命令

maven-assembly-plugin 配置是用于 maven 项目的构建过程,生成一个压缩包(tar 或 zip 格式)并将其输出到指定的目录

			
            
                
                maven-assembly-plugin
                
                    
                    false

                    
                    build-jar

                    
                    target/

                    
                        
                        src/main/resources/assembly.xml
                    
                
                
                    
                        
                        make-assembly

                        
                        package

                        
                            
                            single
                        
                    
                
            

assembly.xml文件内容



    package
    
        zip
    
    true
    










        
        
            ${project.build.directory}/lib
            ${file.separator}lib
            
            
                *.jar
            
        

        
        
            ${project.build.directory}
            ${file.separator}
            
                *.jar
            
        
    

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

发布于 2025-05-07 22:58:04
分享
海报
105
上一篇:Spring动态修改bean属性配置key的几种方法 下一篇:Spring Boot整合Drools规则引擎实战指南及最佳实践
目录

    忘记密码?

    图形验证码