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
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
推荐阅读
-
IDEA中使用Gradle构建项目中文报GBK错误的解决方案
-
将Java应用做成exe可执行软件的流程步骤
-
SpringBoot实现多种来源的Zip多层目录打包下载
需要将一批文件(可能分布在不同目录、不同来源)打包成zip格式,按目录结构导出给用户下载。1.核心思路支持将本地服务器上的文...
-
Java中减少if-else的设计模式和优化技巧
前言“过于依赖if-else不仅会让代码变得臃肿不堪,还会使维护成本大大增加。其实,if-else虽然是最基础的条件分支,...
-
Spring Boot 中使用 Drools 规则引擎的完整步骤
-
Spring Boot整合Drools规则引擎实战指南及最佳实践
一、drools简介与核心概念1.1什么是drools?drools是redhat旗下的开源业务规则管理系统(brms),...
-
Spring动态修改bean属性配置key的几种方法
静态配置的局限性先来看一个典型场景。假设我们有一个数据源配置类:@configuration@configurationpr...
-
Java如何判断一个IP是否在给定的网段内
-
从零开始学java之二叉树和哈希表实现代码
-
Java如何解决ArrayList的并发问题
arraylist是java.util包中的一个类,它不是线程安全的。如果多个线程同时对同一个arraylist进行操作,可能会...