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中的驱动依赖并不会自动引入到类路径,你的项目需要显式声明目标数据库驱动依赖。

相关推荐
小湘西6 分钟前
Apache HttpClient 的请求模型和 I/O 类型
java·http·apache
沃夫上校20 分钟前
Feign调Post接口异常:Incomplete output stream
java·后端·微服务
q5673152329 分钟前
Java Selenium反爬虫技术方案
java·爬虫·selenium
张小洛32 分钟前
Spring IOC容器核心阶段解密:★Bean实例化全流程深度剖析★
java·后端·spring·ioc容器·bean实例化
不良手残41 分钟前
IDEA类和方法注释模板设置-保姆教程
java·开发语言
GoodStudyAndDayDayUp1 小时前
调用海康API预览视频
java·海康
李迟1 小时前
在Linux服务器上使用kvm创建虚拟机
java·linux·服务器
Dcs1 小时前
6 个 PWA 高阶策略,助你提升用户留存与参与度
java
hdsoft_huge1 小时前
Spring Boot 高并发框架实现方案:数字城市的奇妙之旅
java·spring boot·后端
就改了1 小时前
JUC小册——公平锁和非公平锁
java·开发语言