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>

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

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

相关推荐
微光闪现2 小时前
AI识别宠物焦虑、紧张和晕车行为,是否已经具备实际可行性?
大数据·人工智能·宠物
大厂技术总监下海5 小时前
“Today I Learned”(TIL):一种比写博客更可持续的知识沉淀习惯
大数据·开源·github
房产中介行业研习社6 小时前
2026年1月房产中介管理系统排名
大数据·人工智能
有味道的男人6 小时前
平衡接入京东关键词API利弊的核心策略
大数据·运维
码农小卡拉6 小时前
Maven与Gradle选型指南:如何匹配项目的依赖管理需求
java·gradle·maven
ZKNOW甄知科技6 小时前
IT自动分派单据:让企业服务流程更智能、更高效的关键技术
大数据·运维·数据库·人工智能·低代码·自动化
屿小夏.6 小时前
【Elasticsearch】Elasticsearch的分片和副本机制
大数据·elasticsearch·jenkins
Jinkxs6 小时前
Gradle - 与Elasticsearch集成 构建搜索服务项目
大数据·elasticsearch·搜索引擎
DBA大董8 小时前
云环境部署TDengine的那些坑
大数据·时序数据库·tdengine
阿坤带你走近大数据8 小时前
数据湖的构建实施方法论
大数据·数据湖·湖仓一体