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>

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

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

相关推荐
培培说证1 小时前
2026 大专大数据与会计专业核心证书推荐什么
大数据
sensen_kiss2 小时前
INT303 Big Data Analysis 大数据分析 Pt.11 模型选择和词向量(Word Embeddings)
大数据·数据挖掘·数据分析
代码方舟2 小时前
Java后端实战:构建基于天远手机号码归属地核验的金融级风控模块
java·大数据·开发语言·金融
Dxy12393102163 小时前
Elasticsearch 8.13.4 条件修改 DSL 语句详解
大数据·elasticsearch·搜索引擎
Honeyeagle3 小时前
移动式多合一气体检测仪在有限空间作业中的技术实践与安全价值
大数据
YangYang9YangYan3 小时前
2026高职大数据专业的实用价值与技术前景
大数据
驭白.3 小时前
不止于自动化:新能源汽车智造的数字基座如何搭建?
大数据·人工智能·自动化·汽车·数字化转型·制造业
扉间7983 小时前
合并后的项目 上传分支 取哪里的东西提交
大数据·chrome·elasticsearch
企业智能研究3 小时前
什么是数据治理?数据治理对企业有什么用?
大数据·人工智能·数据分析·agent
雪兽软件4 小时前
您需要了解的顶级大数据技术
大数据