maven <dependency>中的<optional>

说明

optional 是Maven依赖的一个选项,表示 该依赖是可选的

  • optional 的值为 true:表示可选,项目之间依赖不传递

  • optional 的值为 false:表示传递依赖

  • 不设置optional,默认是 false

例子

如上图,假设有3个project:

  • A project
  • B project依赖A project
  • C project依赖B project,但是 C project不依赖A project

此时在 B project 的 pom.xml 中配置依赖A project时就加上<optional>true</optional>,如下:

<dependency>
    <groupId>......</groupId>
    <artifactId>A project</artifactId>
    <optional>true</optional>
</dependency>

在 C project 的 pom.xml 中配置依赖B project时,就不会依赖 A project,即:依赖不会传递。否则会自动依赖 A project的jar包

例子

配置springboot热部署时:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>

配置lombok时:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

感谢:
https://blog.csdn.net/zwt0909/article/details/53221252


原文出处:/show_1EF5glAiTVZ4.html