【笔记】关于Maven中<optional>标签的理解

96 阅读1分钟

之前我有个误区:子pom通过<parent>标签继承父pom,如果父pom中的依赖设置<optional>true</optional>

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>${lombok.version}</version>
	<optional>true</optional>
</dependency>

子pom就不会继承此依赖关系,事实证明,我理解错了。下面通过实际操作来理解可选依赖。

SpringCloud项目主工程的pom.xml文件如下:引入了hutool-all工具jar包

在这里插入图片描述

common公共模块继承主工程

在这里插入图片描述

通过Maven Helper插件看看模块的依赖关系,发现hutool-all jar包被继承下来了。

在这里插入图片描述 难道是<optional>标签不生效吗?,不是的,<optional>标签实际应用如下:

在common模块中引入一个新的jar包,去掉<optional>属性,或者属性值设置为false

在这里插入图片描述

另一个business业务模块引入common公共模块,使business业务模块在可以顺利声明使用common模块中写的公共方法。

在这里插入图片描述

Maven Helper查看依赖(Maven Helper插件的安装和使用这里不再赘述,大家网上搜素就有相关文档),可以看到easypoi依赖也顺利加载过来

在这里插入图片描述 我们现在回到common模块,设置easypoi依赖的<optional>true</optional>,在查看business模块的依赖关系,发现没有easypoi依赖了。

在这里插入图片描述 至此,结束。希望这篇文章对家理解<optional>有一定的帮助。