Maven 中的 optional 的作用
分类:软件编程
阅读:53
作者:皇太极
发布:2021-02-22 17:41:30

Maven 中的 optional 的作用

当某个依赖定义为 <optional>true</ptional>后,该依赖便只能在本项目中传递,不会被传递到引用该依赖的父项目中,父项目需要主动引用才行。

  1. <project>
  2. ...
  3. <dependencies>
  4. <!-- 将 mysql 驱动包依赖设置为可选 -->
  5. <dependency>
  6. <groupId>mysql</groupId>
  7. <artifactId>mysql-connector-java</artifactId>
  8. <version>5.1.45</version>
  9. <optional>true</optional> <!-- optional 的值有 true 和 false 可选 -->
  10. </dependency>
  11. </dependencies>
  12. </project>

针对上面的场景,可以在我们的持久化框架中,将每个驱动包依赖均设置为可选

image

这时,假设有个 ProjectA 项目需要使用这个持久化框架,数据库使用的 Mysql, 那么它还需要在 ProjectA 项目中,重新添加 Mysql 驱动依赖:

image

Maven 中的 <optional><exclusions>的区别:

它们都是用来排除 Jar 包依赖的,但是作用上却是有所不同。

  • 依赖被定义为 optional 可选,那么依赖只能在该项目中传递,并不会被传递到引用该项目的父项目中,父项目需要重新引用该依赖才可以。
  • exclusions 则是排除子项目中传递过来的依赖。