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 分钟前
可能最后一个版本,作者不更新了!
eclipse·maven·lua·visual studio
paishishaba36 分钟前
JAVA面试复习笔记(待完善)
java·笔记·后端·面试
四谎真好看1 小时前
Java 黑马程序员学习笔记(进阶篇19)
java·笔记·学习·学习笔记
從南走到北2 小时前
JAVA代泊车接机送机服务代客泊车系统源码支持小程序+APP+H5
java·开发语言·微信小程序·小程序
apocelipes7 小时前
golang unique包和字符串内部化
java·python·性能优化·golang
Full Stack Developme8 小时前
java.text 包详解
java·开发语言·python
刘梦凡呀9 小时前
C#获取钉钉平台考勤记录
java·c#·钉钉
best_virtuoso9 小时前
PostgreSQL 常见数组操作函数语法、功能
java·数据结构·postgresql
yudiandian20149 小时前
02 Oracle JDK 下载及配置(解压缩版)
java·开发语言