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 分钟前
【期末考试总结】spark课程知识点
大数据·单例模式·spark
Code Slacker2 分钟前
第八届传智杯AI云计算大数据开发挑战赛练习题库(三)
大数据·人工智能·云计算·竞赛
无代码专家3 分钟前
无代码驱动行业数字化转型:从痛点突破到效能重构
大数据·低代码·制造
拓端研究室18 分钟前
2025医疗人工智能报告:AI应用、IVD市场、健康科技|附240+份报告PDF、数据、可视化模板汇总下载
大数据·人工智能·物联网
天远数科23 分钟前
Node.js全栈开发:深度集成天远贷前风险报告接口打造风控中台
大数据·node.js
Data_agent26 分钟前
微店商品列表API接口指南
大数据·数据库·python
Vic1010127 分钟前
PostgreSQL 中序列(bigserial 和手动序列)的使用与注意事项
java·大数据·数据库·postgresql
武汉唯众智创28 分钟前
应用型大数据实训室实验教学方案:一份基于开源技术的完整实训指南
大数据·开源·大数据实训室·开源技术·大数据实验室
武子康29 分钟前
大数据-203 scikit-learn 决策树剪枝参数:max_depth/min_samples_leaf 到 min_impurity_decrease
大数据·后端·机器学习