zoukankan      html  css  js  c++  java
  • Maven--排除依赖

     传递性依赖会给项目隐式地引入很多依赖,这极大地简化了项目依赖的管理,但是有些时候这种特性也会带来问题。

    例如,当前项目有一个第三方依赖,而这个第三方的依赖由于某些原因依赖了另外一个类库的 SNAPSHOT 版本,那么这个 SNAPSHOT 就会成为当前项目的传递性依赖,而 SNAPSHOT 的不稳定性会直接影响到当前的项目。这时就需要排除掉该 SNAPSHOT,并且在当前项目中声明该类库的某个正式发布的版本。

    还有一些情况,你可能也想要替换某个传递性依赖,比如 Sun JTA API,Hibernate 依赖于这个 JAR,但是由于版权的因素,该类库不再中央仓库中,而 Apache Geronimo 项目有一个对应的实现。这时你就可以排除 Sun JTA API,再声明 Geronimo 的 JTA API 实现。

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3     <modelVersion>4.0.0</modelVersion>
     4 
     5     <groupId>com.juvenxu.mvnbook</groupId>
     6     <artifactId>project-a</artifactId>
     7     <version>1.0.0</version>
     8 
     9     <dependencies>
    10         <dependency>
    11             <groupId>com.juvenxu.mvnbook</groupId>
    12             <artifactId>project-b</artifactId>
    13             <version>1.0.0</version>
    14             <exclusions>
    15                 <exclusion>
    16                     <groupId>com.juvenxu.mvnbook</groupId>
    17                     <artifactId>project-c</artifactId>
    18                 </exclusion>
    19             </exclusions>
    20         </dependency>
    21         <dependency>
    22             <groupId>com.juvenxu.mvnbook</groupId>
    23             <artifactId>project-c</artifactId>
    24             <version>1.0.0</version>
    25         </dependency>
    26     </dependencies>
    27 
    28 </project>

    上述代码中,项目 A 依赖于项目 B,但是由于一些原因,不想引入传递性依赖 C,而是自己显示地声明对于项目 C 1.0.0 版本的依赖。代码中使用  <exclusions> 元素声明排除依赖, <exclusions> 可以包含一个或者多个  <exclusion> 子元素,因此可以排除一个或者多个传递性依赖。

    需要注意的是,声明  <exclusion> 的时候只需要 groupId 和 artifactId,而不需要 version 元素,这是因为只需要 groupId 和 artifactId 就能唯一定位依赖图中的某个依赖。

  • 相关阅读:
    db2中的常用命令及使用方法
    互联网服务应用协议设计
    Zookeeper整理(一)- 写操作产生事件,写操作与Watcher对应关系
    实现自己的连接池(一)
    SMP、NUMA、MPP体系结构介绍
    随手备忘 ubuntu12.04 lts 安装gcc 4.8
    认真体会 结构体中的零长度数组
    由内存池实现总结内存对齐问题
    认真理解 oom killer 备忘
    仔细体会 epoll中的et lt模式
  • 原文地址:https://www.cnblogs.com/microcat/p/7229326.html
Copyright © 2011-2022 走看看