为了账号安全,请及时绑定邮箱和手机立即绑定

Maven Optional & Exclusions 使用区别

标签:
Java

Optional和Exclusions都是用来排除jar包依赖使用的,两者在使用上却是相反。

Optional定义后,该依赖只能在本项目中传递,不会传递到引用该项目的父项目中,父项目需要主动引用该依赖才行。

Exclusions则是主动排除子项目传递过来的依赖。

用法区别

Project-X -> Project-A\n> Project-A -> Project-B

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>sample.ProjectB</groupId>
      <artifactId>Project-B</artifactId>
      <version>1.0</version>
      <scope>compile</scope>
      <optional>true</optional>
    </dependency>
  </dependencies>
</project>

如上X依赖A,A依赖B用的<optional>true</optional>,这时B只能在A中使用,而不会主动传递到X中,X需要主动引用B才有B的依赖。

如果A不用<optional>true</optional>引用B,则会传递到X中,X如果不需要B则需要主动排除A传递过来的B。

<dependencies>
    <dependency>
      <groupId>sample.ProjectA</groupId>
      <artifactId>Project-A</artifactId>
      <version>1.0</version>
      <scope>compile</scope>
      <exclusions>
        <exclusion>
          <groupId>sample.ProjectB</groupId>
          <artifactId>Project-B</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>
</dependencies>

所以,Optional和Exclusions都是用来控制依赖的传递,可以根据实际场景灵活应用。

更多具体的定义即说明可参考官方说明文档:

本文原创首发于公众号:Java技术栈(ID:javastack),关注公众号回复关键字:maven,可以获取更多。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
1.4万
获赞与收藏
1957

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消