一个项目的pom.xml如果使用了scope为system的depend后,会导致传递依赖中断

概述:

maven 的的scope属性可以为system,因为有些你依赖的jar包可能是没有maven坐标的,它完全不在maven体系中,这时候你可以把它下载到本地硬盘,然后通过system来引用

不过不推荐使用system,因为一个项目的pom.xml如果使用了scope为system的depend后,会导致传递依赖中断,即所有其他依赖本项目的项目都无法传递依赖了。

比如:假设A项目依赖了m.jar,  n.jar, x.jar,  然后我们把A项目打包成了a.jar,  如果此时B项目依赖了A项目,则B项目通常自然就已经默认传递依赖了m.jar,  n.jar, x.jar。

但是如果A项目的pom.xml文件出现了scope为system的depend,则B项目就只能依赖a.jar, 将无法传递依赖m.jar,  n.jar, x.jar

具体举例如下

有一个叫做IJPay的项目, 如果pom.xml中含有了scope为system的depend, 假设pom.xml文件内容如下:

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd">

  4.0.0

  com.github.javen205

  IJPay

  1.1.3

  jar

  IJPay

  Easy PayLibrary

  https://github.com/Javen205/IJPay

 

  。。。。。。。。。

  。。。。。。。。。

 

    

    

         com.google.zxing

         core

         3.2.1

    

     。。。。。。。。。

     。。。。。。。。。

    

    

         com.alibaba

         alipay-sdk-java

         java20171012102412

         system

        

       ${project.basedir}/libs/alipay-sdk-java20180309170622.jar

    

 

  。。。。。。

  。。。。。。

 

有一个maven_project_002的项目maven引用了该项目,pom文件有如下内容

    com.github.javen205

        IJPay

        1.1.3

我们发现, maven_project_002 无法传递依赖IJPay所依赖的jar包,maven_project_002只能依赖IJPay.jar

一个项目的pom.xml如果使用了scope为system的depend后,会导致传递依赖中断_第1张图片


一个项目的pom.xml如果使用了scope为system的depend后,会导致传递依赖中断_第2张图片

现在我们手动把本地的alipay-sdk-java20180309170622.jar上传到私服,并设置好maven坐标, 假设具体坐标是

一个项目的pom.xml如果使用了scope为system的depend后,会导致传递依赖中断_第3张图片

然后我们修改IJPay.xml文件的内容如下

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd">

4.0.0

com.github.javen205

IJPay

1.1.3

jar

IJPay

EasyPay Library

https://github.com/Javen205/IJPay

 

。。。。。。。。。

。。。。。。。。。

   

   

        com.google.zxing

        core

        3.2.1

   

    。。。。。。。。。

    。。。。。。。。。

   

   

   

   

   

         haobin_custom_alipay

         haobin_custom_alipay-sdk

         0.0.1

   

   

。。。。。。

。。。。。。

 

重新打包部署IJPay到私服  mvn clean compile deploy,这时候我们发现maven_project_002可以传递依赖IJPay项目所依赖的jar包了

一个项目的pom.xml如果使用了scope为system的depend后,会导致传递依赖中断_第4张图片

一个项目的pom.xml如果使用了scope为system的depend后,会导致传递依赖中断_第5张图片


结束

你可能感兴趣的:(maven)