问题简述:
在父工程的pom.xml中通过<dependencyManagement>依赖版本统一管理,其中引入了spring-cloud的包,springcloud项目的pom文件不向上找版本号
!--统一定义版本号-->
<properties>
<spring-cloud.version>Greenwich.SR3</spring-cloud.version>
<spring-cloud-alibaba.version>2.1.2.RELEASE</spring-cloud-alibaba.version>
...后面依赖省略...
<!-- 统一依赖管理 -->
<dependencyManagement>
<dependencies>
<!--Spring Cloud相关依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<!-- <type>pom</type>-->
<!-- <scope>import</scope>-->
</dependency>
<!--Spring Cloud Alibaba 相关依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<!-- <type>pom</type>-->
<!-- <scope>import</scope>-->
</dependency>
...后面依赖省略...
在子工程中引入依赖
<!--gateWay网关-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
发现提示:
解决:
加入<type>和<scope>标签
<!--Spring Cloud相关依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
原因:
<scope> 定义了类包在项目的使用阶段。项目阶段包括: 编译,运行,测试和发布
分类:compile、test、runtime、provided、system、import
<type>引入某一个依赖时,必须指定type,这是因为用于匹配dependency引用和dependencyManagement部分的最小信息集实际上是{groupId,artifactId,type,classifier}。
在很多情况下,这些依赖关系将引用没有classifier的jar依赖。这允许我们将标识设置为{groupId,artifactId},因为type的默认值是jar,并且默认classifier为null。
type的值一般有jar、war、pom等,声明引入的依赖的类型
<systemPath>当maven依赖本地而非repository中的jar包,sytemPath指明本地jar包路径,例如:
<dependency>
<groupid>org.hamcrest</groupid>
<artifactid>hamcrest-core</artifactid>
<version>1.5</version>
<scope>system</scope>
<systempath>${basedir}/WebContent/WEB-INF/lib/hamcrest-core-1.3.jar</systempath>
</dependency>