子工程中的依赖不能去父工程中找依赖版本

问题简述:

在父工程的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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值