Maven scope中import的作用

本文详细解释了Maven中dependency的import scope,指出它仅在<dependencyManagement>内部有效,用于将其他项目的依赖管理引入当前项目,相当于直接复制依赖。通过例子展示了如何使用import scope,以及如何覆盖导入的依赖。理解import scope有助于更好地管理和组织项目依赖。
摘要由CSDN通过智能技术生成

(如果为了快速理解,直接看文档最后的举例。)

我们不妨先看下官方文档:Dependency_Scope,关于import的说明如下:

速读一遍,云里雾里的,下面一句一句来读。

This scope is only supported on a dependency of type pom in the <dependencyManagement> section. 

这个scope(指import)仅仅在<dependencyManagement>内部定义的pom<dependency>中支持。

换成中文语序是

只在<dependencyManagement>内定义的<dependency>中支持import这一scope。

下面是第二句

It indicates the dependency is to be replaced with the effective list of dependencies in the specified POM's <dependencyManagement> section.

它表示,在当前这个pom文件的<dependencyManagement>内定义的<dependency>会被替换成一些系列的<dependency>。

第二句已经是调整过语序后的,还能大概理解。下面第三句

Since they are replaced, dependencies with a scope of import do not actually participate in limiting the transitivity of a dependency.

由于他们是被替换的,所以这些被import的scope所导入dependency不会受限依赖继承策略。

第三句提到了依赖继承,但又无需明白依赖继承。因为上面的意思是说,这些dependency可以等价于直接在当前pom文件中定义的,而不是从父项目继承来的。

举个例子

项目A和项目B的pom.xml文件中都定义了<dependencyManagement>,同时在B的<dependencyManagement>中定义<dependency>指向A,且scope为import:

这是project-B的pom.xml
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>project-A</groupId>
        <artifactId>project-A</artifactId>
        <version>1.0</version>
        <scope>import</scope>
      </dependency>
      ...
    </dependencies>
  </dependencyManagement>

这就相当于将A中定义的所有<dependencies>全部复制粘贴到了项目B的pom.xml中。由于是“复制粘贴”,所以不是继承关系。就这个意思。

另外,一个小tip,如果在B中要对A中定义的dependency覆盖,应该注意顺序,将对A的依赖写在下面。

这是project-B的pom.xml
  <dependencyManagement>
    <dependencies>
      <!-- 注意写到对项目A依赖的前面 -->
      <dependency>
        <groupId>some</groupId>
        <artifactId>some</artifactId>
        <version>1.0</version>
      </dependency>

      <dependency>
        <groupId>project-A</groupId>
        <artifactId>project-A</artifactId>
        <version>1.0</version>
        <scope>import</scope>
      </dependency>
      ...
    </dependencies>
  </dependencyManagement>

  • 46
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

horo99

求个赞啦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值