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

相关推荐
过期动态3 分钟前
【LeetCode 热题 100】无重复字符的最长子串
java·数据结构·spring boot·算法·leetcode·职场和发展
Yeats_Liao5 分钟前
好复杂的 IoT 世界:工业数据采集技术栈全景解析
java·物联网·struts
月落归舟13 分钟前
Java线程小记
java·开发语言
西凉的悲伤15 分钟前
Spring Cloud Gateway介绍
java·spring cloud·gateway
逸Y 仙X38 分钟前
文章五:Elasticsearch安全通信
java·大数据·安全·elasticsearch·搜索引擎·全文检索·jenkins
quan26311 小时前
20260529,日常开发-查老数据全量更新闭坑
java·mysql·主从·主从延迟
大大杰哥1 小时前
Java 日志框架详解:SLF4J + Logback 从入门到实战
java·开发语言·logback
Dest1ny-安全1 小时前
2026最新CTF知识库:12大Web漏洞深度文章+1156篇历年大赛WP+50+脚本+Payload速查 +AI/RAG离线在线知识库
java·学习·安全·web安全·servlet
404号扳手1 小时前
Java 基础知识(六)
java·后端
我命由我123451 小时前
SEO 与 GEO 极简理解
java·linux·运维·开发语言·学习·算法·运维开发