9-依赖的传递性

对于依赖的传递而言,主要是针对compile作用域传递 

<!-- 引入着两个模块工程包 他们所依赖的jar也会添加到library中 测试:可以注释下面引入的工程看效果 -->

  <!--2.依赖传递

           1. 在user-service引入user-core 和user-log 叫做依赖传递 前提是只传递 user-core 和user-log里的jar作用域等于 complier的 传递给user-service 

           2. 如果user-service和user-core 包中都有log4j.jar包 并且级别相同 则在依赖传递的时候会根据pom.xml从上到下执行顺序进行在user-servcie中添加依赖传递的jar包          

           3. user-core 有dbunit.jar dbunit.jar依赖commons-logging-1.0.4.jar(间接依赖)

              user-log 里直接使用<dependency>引入commons-logging-1.1.1.jar  (直接依赖)              

              user-service 通过依赖传递引入user-core和user-log时user-core 和user-log里有相同的jar包 则按照顺序引入

             但是在不同级别的时候 比如  user-core中通过引入dbunit.jar dbunit.jar依赖commons-logging-1.0.4引入了commons-logging-1.0.4 

            顺序就是user-service > user-core>dbunit.jar> commons-logging-1.0.4

            而引入user-log 距离是最短的所以采用user-log里的commons-logging的jar

    顺序就是 user-service > user-log > commons-loggging-1.1.1     

    如果user-service中有commons-logging 不管是几点几版本都会使用该版本引入距离最短  

    -->

   

     <dependency>

      <groupId>${project.groupId}</groupId>

      <artifactId>user-core</artifactId>

    </dependency>

    

     <dependency>

      <groupId>${project.groupId}</groupId>

      <artifactId>user-log</artifactId>

    </dependency>

 

 <!-- 3. 如果user-service中有commons-logging 不管是几点几版本都会使用该版本引入距离最短 -->     

  <!--   <dependency>

<groupId>commons-logging</groupId>

<artifactId>commons-logging</artifactId>

<version>1.0.4</version>

</dependency> -->

 

 

  <!--依赖传递  范围

  (该jar 用于综合测试依赖范围 和 依赖的传递 配合使用)

  1.如果去掉<scope>test</scope> 该jar 将不会依赖传递给user-service jar包中

  2.如果加上<scope>test</scope> 该jar 将会依赖传递给user-service jar包中

  -->

<dependency>

<groupId>dbunit</groupId>

<artifactId>dbunit</artifactId>

</dependency>

依赖传递 意思就是如果service引入core工程 只会将core里引入的jar包传递给service前提是scope等于compile里的jar包传递给service

如果scope等于test 将不会进行传递到service lib下

猜你喜欢

转载自hdzhangyanfeng.iteye.com/blog/2097326