Maven optional的作用

Maven optional的作用

这里的optional作用,可参考How do optional dependencies work?。

复制代码
Project-A -> Project-B

The diagram above says that Project-A depends on Project-B. When A declares B as an optional dependency in its POM, this relationship remains unchanged. It's just like a normal build where Project-B will be added in Project-A's classpath.

复制代码
Project-X -> Project-A

When another project (Project-X) declares Project-A as a dependency in its POM, the optional nature of the dependency takes effect. Project-B is not included in the classpath of Project-X. You need to declare it directly in the POM of Project X for B to be included in X's classpath.

简单来说,Project-X依赖Project-A,Project-A依赖Project-B,在Project-A中定义Project-B为optional的,在Project-X才会起作用并且不会引入Project-B依赖,也就是说Optional会阻止依赖传递。

比如有个项目X2,它的功能跟Hibernate类似,支持MySQL, PostgreSQL, Oracle,它会依赖各个数据库的驱动,在X2编译时,需要所有驱动的依赖;但你的项目仅使用其中一个数据库,而不需要其他依赖。X2中就可以声明所有驱动为Optional,你的项目直接声明依赖X2,X2中的驱动依赖并不会自动引入到类路径,你的项目需要显式声明目标数据库驱动依赖。

相关推荐
三84411 分钟前
Fastjson 漏洞 · 02 · autoType 机制与 checkAutoType
java·fastjson
无限码力35 分钟前
小红书笔试真题 9.17 - 待发热度重排(C++/Py/Java /Js/Go)
java·小红书·小红书笔试真题·小红书技术岗笔试真题
卓怡学长41 分钟前
w194基于ssm新能源汽车充电系统小程序
java·小程序·intellij-idea
JAVA面经实录9171 小时前
Java高级后端 · 全套面试通关手册(MySQL)
java·mysql·面试
光依旧1 小时前
MCP实战手记(八):从“能跑“到“能上线“——无状态MCP Server的生产落地清单
java·人工智能·spring boot·架构·ai agent·mcp
弹简特2 小时前
【Java项目-企悦抽】15-活动管理模块02-活动创建测试与活动列表实现
java·开发语言·springboot
斯内普吖2 小时前
(开源)水果蔬菜商城实战指南 基于 Java + SSM + Vue + MySQL
java·vue.js·mysql·开源
wang_shu_mo_ran2 小时前
Spring IoC和DI概念篇
java·后端·spring
小狼154543 小时前
拼多多订单数据导出 CSV 实战:接口分页、字段平铺与 5 个数据坑,多多开票助手
java·前端·javascript