Maven工程中排除依赖打包的两种方式

在Maven工程中,我们常需要依赖各种第三方库完成项目开发,但在最终交付时,往往不希望将这些依赖本身打包到产品中,以减小发布包体积。此时,可以通过以下两种方式实现:

使用provided

这适用于那些编译时需要,但运行时会由服务器或运行环境提供的库,典型的如Servlet API、JDBC驱动等。可以像下面这样配置:

xml 复制代码
<dependency>
 <groupId>groupId</groupId>
 <artifactId>artifactId</artifactId>
 <version>version</version>
 <scope>provided</scope> 
</dependency>

这种方式编译通过且可以写代码引用,但不会被打入最终包中。

使用true

这表示一个完全可选的依赖,默认是不参与打包的,只有手动设置了才会被包含在内。例如:

xml 复制代码
<dependency>
 <groupId>groupId</groupId>
 <artifactId>artifactId</artifactId>
 <version>version</version>
 <optional>true</optional>
</dependency>

两者都可以实现排除依赖打包,但强调编译必须而运行时不需要,完全是可选依赖。合理运用可以减小项目发布包体积。

两者的共同点是都可以排除依赖的打包,不同在于 表示完全可选,而 表示编译必须但运行时由外部容器提供。

相关推荐
TDengine (老段)16 分钟前
TDengine Go 语言连接器进阶指南
大数据·数据库·物联网·golang·时序数据库·tdengine·涛思数据
~央千澈~17 分钟前
从阅文招聘JD看网文平台算法化-网文平台拥抱科技·卓伊凡
大数据·人工智能
房产中介行业研习社18 分钟前
2026年1月房产中介管理系统哪家好用
大数据·人工智能
deepdata_cn19 分钟前
零售门店:浅数据看客流,大数据看区域,深数据挖消费动机
大数据·零售·深数据·浅数据
xiatianxy26 分钟前
登高作业安全难题如何破?
大数据·人工智能·科技·物联网·安全·智能安全带
开源能源管理系统35 分钟前
MyEMS开源能源管理系统:赋能平板玻璃行业绿色低碳生产
大数据·开源·能源·能源管理系统·平板玻璃
萤丰信息36 分钟前
科技赋能智慧园区:解码绿色转型的“数字密码”
java·大数据·人工智能·科技·安全·智慧城市·智慧园区
培培说证37 分钟前
大专大数据技术专业零基础能考的证书有哪些?
大数据
鸿乃江边鸟1 小时前
Spark native向量化组件 datafusion comet
大数据·spark·native·向量化
LINGYI0003 小时前
什么是品牌全渠道电商代运营公司?
大数据·电商代运营