maven的<dependency>里面的<scope>import</scope>怎么理解?如何解决Maven项目单继承问题?

一、作用:

在Maven中的作用其实相当于一个对所依赖jar包进行版本管理的管理器。

在dependencyManagement下申明的dependencies,Maven并不会去实际下载所依赖的jar包,而是在dependencyManagement中用一个Map记录了jar的三维坐标。

而被dependencies包裹的元素,Maven是会去仓库实际下载所需要的jar包的,而至于需要下载什么版本的jar包就有两种判断途径:

1:如果dependencies里的dependency自己没有声明version元素,那么maven就会到里面去找有没有对该artifactId和groupId进行过版本声明,如果有,就继承它,如果没有就会报错,告诉你必须为dependency声明一个version

2:如果dependencies中的dependency声明了version,那么无论dependencyManagement中有无对该jar的version声明,都以dependency里的version为准。
 

二、多继承:

Maven的继承和Java的继承一样,只能单继承,无法实现多继承,如果想要继承多个父模块应该怎么做呢?

方法一(不可取):只往一个父模块中添加jar包依赖,只继承一个父模块就可以了,但是这样的话所有的jar包都混合在一起了,jar包分类就不在清晰了。

方法二(推荐):使用pomimporttype标签的默认值是jar,代表我们依赖导入的是一个jar包,现在我们设置成了pom,说明导入的是一个父模块,后面的scope标签中的值import代表把父模块中的jar包导入进来,不过需要注意的是pomimport,这种方式只能用在中。

在SpringCloud项目中,我们导入SpringCloud依赖和SpringBoot依赖的代码如下:


    1.8
    Hoxton.SR4
    2.2.0.RELEASE
    1.5.20


        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${com-alibaba-cloud.version}
                pom
                import
            
            
                io.swagger
                swagger-annotations
                ${swagger-annotations.version}
            
    

maven的<dependency>里面的<scope>import</scope>怎么理解?如何解决Maven项目单继承问题?_第1张图片

说的是一个dependencyManagement中的dependency,如果scope是import形式的,那么这个dependency不参与依赖传递。
只是把dependency需要的依赖都取过来,像个占位符一样替换了就行。

你可能感兴趣的:(springboot,pom.xml,maven,maven,java,spring,boot)