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.在子类中需要声明:要使用父类的哪些依赖

扫描二维码关注公众号,回复: 9143841 查看本文章
 <dependencies>
    <!--声明需要父类中的junit。只需要ga 不需要 v-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
  </dependencies>
发布了47 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42428264/article/details/99708565