optional可选依赖,表示当一个项目中的依赖添加上optional=true的选项后,子项目中将不会包含这个依赖。常用于解决jar包冲突问题,和exclusion排除jar有异曲同工之妙,假设a项目中引入了以下依赖:
<!--伪代码写法-->
<project>
<groupId>com.xxx.test</groupId>
<artifactId>test-a</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
</project>
b项目引入了a项目后发现spring-boot-configuration-processor和当前项目存在版本冲突问题,解决方式:
一、b项目中使用exclusion排除
<dependency>
<groupId>com.xxx.test</groupId>
<artifactId>test-a</artifactId>
<version>0.0.1-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</exclusion>
</exclusions>
</dependency>
二、a项目中使用optional选项
<project>
<groupId>com.xxx.test</groupId>
<artifactId>test-a</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</project>
一文带你了解maven中的dependencyManagement