【笔记】关于Maven中<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>
有一定的帮助。