maven3实战之坐标和依赖(最佳实践之排除依赖)
来源:互联网 发布:58到家数据分析待遇 编辑:程序博客网 时间:2024/03/29 01:38
maven3实战之坐标和依赖(最佳实践之排除依赖)
----------
传递性依赖会给项目隐式地引入很多依赖,这极大地简化了项目依赖的管理。但是有些时候这种特性也会带来问题。例如,当前项目有一个第三方依赖,而这个第三方依赖由于某些原因依赖了另外一个类库的SNAPSHOT版本,那么这个SNAPSHOT就会成为当前项目的传递性依赖,而SNAPSHOT的不稳定性会直接影响到当前的项目。这时候需要排除掉该SNAPSHOT,并且在当前项目中声明该类库的某个正式发布版本。还有一些情况,你可能也想要替换某个传递性依赖,比如:sun JTA api,hibernate依赖于这个JAR,但是由于版权的因素。该类库不在中央仓库中,而apache Geronimo项目有一个对应的实现。这时你就可以排除Sun JTA API,再声明Geronimo和JTA API实现。
- <project>
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.juvenxu.mvnbook</groupId>
- <artifactId>project-a</artifactId>
- <version>1.0.0</version>
- <dependencies>
- <dependency>
- <groupId>com.juvenxu.mvnbook</groupId>
- <artifactId>project-b</artifactId>
- <version>1.0.0</version>
- <exclusions>
- <exclusion>
- <groupId>com.juvenxu.mvnbook</groupId>
- <artifactId>project-c</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>com.juvenxu.mvnbook</groupId>
- <artifactId>project-c</artifactId>
- <version>2.2.0</version>
- </dependency>
- </dependencies>
- </project>
上述代码中,项目A依赖于项目B,但是由于一些原因,不想引入传递性依赖C,而是自己显式地声明对于项目C1.1.0版本的依赖。代码中使用exclusions元素声明排除依赖,exclusions可以包含一个或多个exclusion子元素,因此可以排除一个或者多个传递性依赖。需要注意的是,声明exclusion的时候只需要groupId和artifactId,而不需要version元素,这是因为只需要groupId和artifactId就能唯一定位依赖图中的某个依赖。换句话说,maven解析后的依赖中,不可能出现groupId和artifactId相同,但是version不同的两个依赖。
0 0
- maven3实战之坐标和依赖(最佳实践之排除依赖)
- maven3实战之坐标和依赖(最佳实践之归类依赖)
- maven3实战之坐标和依赖(最佳实践之优化依赖)
- maven3实战之坐标和依赖
- maven3实战之坐标和依赖(依赖的配置)
- maven3实战之坐标和依赖(依赖范围)
- maven3实战之坐标和依赖(传递性依赖)
- maven3实战之坐标和依赖(依赖调解)
- maven3实战之坐标和依赖(可选依赖)
- maven3实战之坐标和依赖(传递性依赖)
- Maven学习笔记十五:Maven坐标和依赖(最佳实践之排除依赖)
- maven3实战之坐标和依赖(何为maven坐标)
- maven3实战之坐标和依赖(坐标详解)
- Maven学习笔记十六:Maven坐标和依赖(最佳实践之归类依赖)
- Maven学习笔记十七:Maven坐标和依赖(最佳实践之优化依赖)
- maven3实战之maven安装最佳实践
- maven3实战之maven安装最佳实践
- Maven3实战笔记02坐标和依赖--1
- 润乾报表报表组如何使用openxml方式导出excel
- pat 1051
- UILocalNotification本地通知介绍
- LDAP 常用名词
- Android系统硬件抽象层原理与实现之GPS
- maven3实战之坐标和依赖(最佳实践之排除依赖)
- BloomFilter——大规模数据处理利器
- 微信开发实例视频教程-深入浅出微信公众平台实战开发
- c++中的指针和引用区别
- 网站部署
- 单片机中C语言sbit使用方法
- 魅族隔空回应雷军:开放 Flyme 对抗 MIUI
- maven3实战之坐标和依赖(最佳实践之归类依赖)
- C关于i++和++i