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

文章通过一个例子解释了Maven中<optional>true</optional>标签的实际作用。当父POM中的依赖设置为可选时,子模块并不会直接继承这个依赖,除非子模块或其他依赖直接引用了它。在SpringCloud项目中,作者展示了如何通过设置<optional>标签来控制模块间的依赖传递,确保业务模块只包含必要的依赖。

之前我有个误区:子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>有一定的帮助。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值