ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

maven的<dependency>里面的<scope>import</scope>怎么理解?如何解决Maven项目单继承问题? 一、作用在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器。在dependencyManagement下申明的dependenciesMaven并不会去实际下载所依赖的jar包而是在dependencyManagement中用一个Map记录了jar的三维坐标。而被dependencies包裹的元素Maven是会去仓库实际下载所需要的jar包的而至于需要下载什么版本的jar包就有两种判断途径1如果dependencies里的dependency自己没有声明version元素那么maven就会到dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明如果有就继承它如果没有就会报错告诉你必须为dependency声明一个version2如果dependencies中的dependency声明了version那么无论dependencyManagement中有无对该jar的version声明都以dependency里的version为准。二、多继承Maven的继承和Java的继承一样只能单继承无法实现多继承如果想要继承多个父模块应该怎么做呢方法一不可取只往一个父模块中添加jar包依赖只继承一个父模块就可以了但是这样的话所有的jar包都混合在一起了jar包分类就不在清晰了。方法二推荐使用typepom/typescopeimport/scopetype标签的默认值是jar代表我们依赖导入的是一个jar包现在我们设置成了pom说明导入的是一个父模块后面的scope标签中的值import代表把父模块中的jar包导入进来不过需要注意的是typepom/typescopeimport/scope这种方式只能用在dependencyManagement/dependencyManagement中。在SpringCloud项目中我们导入SpringCloud依赖和SpringBoot依赖的代码如下properties java.version1.8/java.version spring-cloud.versionHoxton.SR4/spring-cloud.version com-alibaba-cloud.version2.2.0.RELEASE/com-alibaba-cloud.version swagger-annotations.version1.5.20/swagger-annotations.version /properties dependencyManagement dependencies dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-dependencies/artifactId version${spring-cloud.version}/version typepom/type scopeimport/scope /dependency dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-dependencies/artifactId version${com-alibaba-cloud.version}/version typepom/type scopeimport/scope /dependency dependency groupIdio.swagger/groupId artifactIdswagger-annotations/artifactId version${swagger-annotations.version}/version /dependency /dependencies /dependencyManagement说的是一个dependencyManagement中的dependency如果scope是import形式的那么这个dependency不参与依赖传递。只是把dependency需要的依赖都取过来像个占位符一样替换了就行。
返回列表