Maven 依赖传递性依赖原则和统一jar版本,继承传递

maven依赖性具有传递性:A.jar -> B.jar -> C.jar 
(当且仅当B.jar -> C.jar 的范围是compile(<scope>compile</scope>))

程序示例:

if(A.jar 依赖 B.jar){
    if(B.jar 依赖 C.jar && scope == compile){
        return A.jar 依赖 C.jar
    }

}

return A.jar 不依赖 C.jar
maven pom.xml 依赖原则:
路径最短依赖原则:自身依赖的jar包 优于 jar包依赖的其它相同的jar
    A.jar依赖spring4.0.jar,依赖B.jar
    B.jar依赖spring5.0.jar
    自己依赖的4.0长度是1,5.0的长度是2,所以最终A会依赖spring.4.0的jar
路径相同时:在同一个pom.xml中,有两个相同的依赖(仅版本不一致):后面声明的会覆盖前面的
          不同的pom.xml中(都是引进来的jar),前面声明过了,后面将不会在声明。

可以将依赖版本号集中写在<properties></properties>标签中。例如:

 <properties>
   <!-- spring.version 这个可以自定义-->
   <spring.version>4.3.4.RELEASE</spring.version>
  </properties>

  <dependencies>
    <dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context</artifactId>
    <!--使用EL表达式获取上面properties中的sping.version标签的值-->
	<version>${spring.version}</version>
	</dependency>
  </dependencies>

上面看到的maven传递性是具有局限性的(scope == compile)

【小提示】

maven创建项目时打包方式的选择
java工程选择 jar
web 工程选择 war
父工程 选择 pom(maven继承,父工程需要选择pom)

使用maven继承(只要B.jar依赖的A都能依赖):

if(A.jar 依赖 B.jar){
    if(B.jar 依赖 C.jar){
        return A.jar 依赖 C.jar
    }

}

return A.jar 不依赖 C.jar

继承实现步骤:

1.创建父工程 父工程的打包方式选择pom

2.在父工程的pom.xml中依赖需要写在:<dependencyManagement></dependencyManagement>中


  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId></groupId>
        <artifactId></artifactId>
      </dependency>
    </dependencies>
  </dependencyManagement>

3.在子工程的pom.xml中需要写

<!--给当前工程继承一个父工程1.加入父工程gav 2.当前工程的pom.xml到父工程的pom.xml的相对路径--> 
<parent>
     <!--1.加入父工程gav-->
    <groupId>com.mf</groupId>
    <artifactId>father</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--2.当前工程的pom.xml到父工程的pom.xml的相对路径-->
    <relativePath>../father/pom.xml</relativePath>
  </parent>

如果子工程的groupId 和 version 相同。可以只写artifactId(继承)

4.在子类中需要声明:要使用父类的哪些依赖

 <dependencies>
    <!--声明需要父类中的junit。只需要ga 不需要 v-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
  </dependencies>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值