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>

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

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

相关推荐
IT_Octopus7 分钟前
从一个应用开发者的角度,搞懂大数据查询的完整链路
java·大数据·数据库
安全指北针14 分钟前
数据安全产品 POC 验证怎么做?一套可落地的评估方法
大数据·安全
科技在线35 分钟前
学大教育与开源中国达成战略合作,联合发布FDE人才培养课程框架
大数据·科技
优氙费控1 小时前
电子发票报销怎么管理?采集、验真、报销、归档全流程
大数据·人工智能
Leo.yuan2 小时前
2026 年内网数据分析 Agent 选型:私有化部署、信创适配与安全合规的评估框架
大数据
AgentMaster2 小时前
数据资产化落地难题:5款数据中台系统架构对比与实施记录
大数据·人工智能·算法
织码weavecodes2 小时前
离线学习与多端进度同步:在线心跳、Redis 缓冲与断点续考技术实现
大数据·自动化
IT毕设实战小研2 小时前
基于大数据的商场商铺数据分析与可视化的设计与实现
android·java·大数据·django·课程设计
智慧物业老杨2 小时前
人机协同的物业服务重构:技术落地路径与系统化思考
java·大数据·人工智能·重构·系统架构
汇智信科3 小时前
汇智信科-大型设备监控和故障诊断系统
大数据·汇智信科