Maven Optional & Exclusions使用区别

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

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

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

用法区别

Project-X -> Project-A 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都是用来控制依赖的传递,可以根据实际场景灵活应用。

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

http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

原文发布于微信公众号 - Java技术栈(javastack)

原文发表时间:2018-01-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大内老A

[WCF 4.0新特性] 标准终结点与无(.SVC)文件服务激活

今天介绍WCF 4.0的另外两个新特性:标准终结点(Standard Endpoint)和无(.SVC)文件服务激活(File-Less Activation)...

258100
来自专栏王亚昌的专栏

路由查找算法优化心得

    项目代码中有一个基础类库,用于解析client到server的路由配置文件,同时管理长连接。路由配置文件格式大致如下所示:

11220
来自专栏Java帮帮-微信公众号-技术文章全总结

Java基础-01总结概述,dos,功能键,path

1:计算机概述(了解) (1)计算机 (2)计算机硬件 (3)计算机软件 系统软件:window,linux,mac 应用软件:qq,yy,飞秋 (...

383130
来自专栏阮一峰的网络日志

什么是 Event Loop?

Event Loop 是一个很重要的概念,指的是计算机系统的一种运行机制。 JavaScript语言就采用这种机制,来解决单线程运行带来的一些问题。 ? ...

31480
来自专栏康怀帅的专栏

Fish Shell 安装配置

fish-shell GitHub:https://github.com/fish-shell/fish-shell oh-my-fish GitHub:htt...

73340
来自专栏java思维导图

【读书笔记】1.1-基于TCP协议的RPC

1.1.1RPC名词解释 概念 全称Remote Process Call,即远程过程调用 rpc的实现包括服务的调用方和服务的提供方 过程 服务调用方发送RP...

30230
来自专栏技术随笔

[Linux] 解压zip文件中文乱码问题解决

39580
来自专栏全沾开发(huā)

使用postman进行API自动化测试

使用postman进行API自动化测试 最近在进行一个老项目的升级,第一步是先将node版本从4.x升级到8.x,担心升级会出现问题...

67370
来自专栏Young Dreamer

babel入门基础

背景 babel的官网说babel是下一代的js语法编译器,现在自己也在很多项目中使用了babel,可是自己对babel的认识呢,只停留在从google和别人...

29950
来自专栏漏斗社区

工具| 诸神之眼nmap定制化之并发处理

当我们使用nmap来进行大规模探测的时候,速度和准确度是摆在我们面前的两个问题,这时需要考虑到nmap的并发处理能力。 0x01 nmap本身的并发执行 相关...

43450

扫码关注云+社区

领取腾讯云代金券