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

相关推荐
毕设源码-朱学姐5 小时前
【开题答辩全过程】以 三叶草中石油信息管理系统的设计与实现为例,包含答辩的问题和答案
java·eclipse
期待のcode5 小时前
@RequestBody的伪表单提交场景
java·前端·vue.js·后端
气π6 小时前
【JavaWeb】——(若依+AI)-帝可得实践项目
java·spring
乌暮6 小时前
JavaEE初阶--多线程案例
java·java-ee
小光学长6 小时前
基于ssm旅游管理系统的开发与设计z050cft7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·数据库·旅游
用户3521802454756 小时前
🥯2025 年终极避坑指南:Spring Boot 2.7 + 3.2 混合集群的 Redis + OAuth2 序列化血泪史
java·后端·spring cloud
陌路物是人非6 小时前
记一个 @Resource BUG
java·开发语言·bug
晴天飛 雪6 小时前
Spring Boot 上传shp压缩包解析多少地块
java·spring boot
曹牧6 小时前
Java:Math.abs()‌
java·开发语言·算法