Maven学习(七)- maven的依赖范围&传递&冲突&聚合&继承

一. 依赖范围
依赖范围scope
二. 依赖传递

  1. A <-- B <-- C : C依赖于A,但不一定会用到A
  2. 怎么去除C对A的依赖:<exlusions></exclusions> 标签的使用
<dependencies>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-embedder</artifactId>
      <version>2.0</version>
      <exclusions>
        <exclusion>
          <groupId>org.apache.maven</groupId>
          <artifactId>maven-core</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    ...
  </dependencies>

三. 依赖冲突
依赖冲突即在传递依赖中出现类似A->B->C B依赖A,C依赖B,A和B中都有1.jar,而C中到底是引入谁的jar呢?,依赖冲突有两个原则:

(1)短路优先原则:这种情况下C引入的B中的jar包
(2)最先声明原则:在路径相同的情况下,谁先声明就引入哪个jar;比如A->C,B->C ,在C中先声明了A的引入后声明B,则C中引入的是A的jar包

四. 依赖聚合&继承
(1)聚合:当一个项目依赖于其他多个项目本身package后的jar包时,要先编译打包依赖的项目,再编译打包当前项目;使用聚合可以一次达到目的!!!

<modules>
    <module>my-project</module>
    <module>another-project</module>
    <module>third-project/pom-example.xml</module> 
</modules>

(2)继承:就是jar包的继承使用关系,若A要继承B中的junit包,可以这么做:

B 的 pom.xml :

<dependencyManagement>
	<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>
<dependencyManagement>

A引入B中的junit:

  <parent>
    <groupId>B's groupId</groupId>
    <artifactId>B's artifactId</artifactId>
    <version>B's version</version>
  </parent>
  
  ......
  
 <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
 </dependency>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值