zoukankan      html  css  js  c++  java
  • 依赖传递

    1、依赖传递的概念

      pom.xml 中引入的依赖,在构建或运行时所有必要的类和资源都会自动添加到项目的 classpath 中。

      Maven 中的依赖是有传递(Transitive)性的,默认会包含传递的依赖,这样就不用手动引用每一个依赖了。比如下面这个依赖关系中,A 依赖 B,B 依赖了 C……,如果你依赖 A 的话,就会自动包含 A/B/C/D/E。

        

    2、依赖传递存在的问题

        

      由于传递依赖,D 2.0 和 D 1.0 都会被加入 ClassPath 中,但因为它们版本不同,很可能会有包冲突等一系列问题。

    3、解决依赖传递的方式

      解决这个依赖传递导致的冲突问题,有两种方案:

      (1)在使用者,也就是发起依赖方进行排除 

    <dependency>
      <groupId>group-a</groupId>
      <artifactId>artifact-a</artifactId>
      <version>1.0</version>
      <exclusions>
        <exclusion>
          <groupId>group-c</groupId>
          <artifactId>excluded-artifact</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    

      (2)在提供方,将依赖的范围定义为不传递,这样在构建时就不会包含这些不传递的依赖包了。也有两种方式:

       使用<scope>provided</scope>

    <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.0</version>
                <scope>provided</scope>
    </dependency>
    

       使用<optional>true</optional>

    <dependency>
                <groupId>com.coohua.caf</groupId>
                <artifactId>caf-boot-starter-web</artifactId>
                <optional>true</optional>
    </dependency>
    

      

  • 相关阅读:
    『深度应用』NLP机器翻译深度学习实战课程·零(基础概念)
    Sorl初始
    Hadoop简介
    lucene的分词器宝典
    Lucene 更新、删除、分页操作以及IndexWriter优化
    Lucene 初步 之 HelloWorld
    lucene介绍和存储介绍
    Spring 集成rabbiatmq
    RabbitMQ 之消息确认机制(事务+Confirm)
    RabbitMQ 的路由模式 Topic模式
  • 原文地址:https://www.cnblogs.com/jing-yi/p/15139201.html
Copyright © 2011-2022 走看看