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>

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

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

相关推荐
德彪稳坐倒骑驴几秒前
Hive SQL常遗忘的命令
hive·hadoop·sql
jiaozi_zzq1 分钟前
中专大数据专业学生如何规划证书考取与职业发展路径
大数据·职场和发展·数据分析·证书
纠结哥_Shrek2 分钟前
不均衡分布原则进行选品
大数据·人工智能
小五传输6 分钟前
认准好用的跨网文件安全交换系统:安全传输与高效协作两全其美
大数据·运维·安全
Gofarlic_oms19 分钟前
从手动统计到自动化:企业AutoCAD许可管理进化史
大数据·运维·网络·人工智能·微服务·自动化
晟诺数字人18 分钟前
数字人短视频引流获客攻略
大数据·人工智能
Elastic 中国社区官方博客22 分钟前
使用 Elastic Agent Builder 和 MCP 实现 Agentic 参考架构
大数据·人工智能·elasticsearch·搜索引擎·ai·架构·全文检索
麦兜*29 分钟前
Spring Boot 整合 Apache Doris:实现海量数据实时OLAP分析实战
大数据·spring boot·后端·spring·apache
云启数智YQ30 分钟前
深入解析云桌面:定义、主流方案与行业实践
大数据
档案宝档案管理30 分钟前
权限分级+加密存储+操作追溯,筑牢会计档案安全防线
大数据·网络·人工智能·安全·档案·档案管理