zoukankan      html  css  js  c++  java
  • 记一次 dependencyManagement 问题解决

    使用场景

    定义在parent项目中,管理children中引入的依赖版本信息

    定义来说比叫简单,既然在父项目中定义了

    创建maven项目,项目结构

    wangshuyu-center
    - wangshuyu-center-api
    - wangshuyu-center-server
    - wangshuyu-center-dao
    

    wangshuyu-center pom.xml中引入了 dependencyManagement

    <!-- wangshuyu-center pom.xml -->
    
    <dependencyManagement >
      <dependencies>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>4.3.7.RELEASE</version>
        </dependency>
      </dependencies>
    </dependencyManagement>
    
    

    wangshuyu-center-server 引入 wangshuyu-center pom.xml

    <!-- wangshuyu-center-server pom.xml -->
    
    <parent>
      <artifactId>wangshuyu-center</artifactId>
      <groupId>com.wangshuyu.center</groupId>
      <version>1.0-SNAPSHOT</version>
    </parent>
    
    

    此时在 External Libraries中是没有 spring-jdbc的 jar

    如果module中需要使用 dependencyManagement 中的依赖,需要在自己的 pom.xml 中引入

    <!-- wangshuyu-center-server pom.xml -->
    
    <parent>
      <artifactId>wangshuyu-center</artifactId>
      <groupId>com.wangshuyu.center</groupId>
      <version>1.0-SNAPSHOT</version>
    </parent>
    
    <dependencies>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <!-- 这里不需要再定义version,会使用management中的 -->
        <!-- 如果定义了version则优先使用自定义的,最短路径原则 -->
      </dependency>
    
    </dependencies>
    
    

    比较有意思的是,如果我在wangshuyu-center-server中引入新的version

    当满足下面两个条件时,会标红

    1. version在本地仓库中是不存在的;

    2. 子pom中没有引入该依赖;

    结论:dependencyManagement中的定义的依赖不会自动去从远程仓库下载,只有当module引入该依赖时才会去从远程仓库下载。

    其实也很好理解,dependencyManagement是规范版本信息,所定义的依赖module中并不一定会使用,只有当module使用时才需要导入。

    更进一步

    dependencyManagement中的依赖来源:从module中提取

    当在开发module时,需要对新引入的dependency做版本管理时,使用dependencyManagement,将module中的version放在父项目中管理。

  • 相关阅读:
    BZOJ 3205 [Apio2013]机器人 ——斯坦纳树
    BZOJ 3782 上学路线 ——动态规划 Lucas定理 中国剩余定理
    HDU 1423 Greatest Common Increasing Subsequence ——动态规划
    BZOJ 3309 DZY Loves Math ——莫比乌斯反演
    POJ 1038 Bugs Integrated, Inc. ——状压DP
    POJ 3693 Maximum repetition substring ——后缀数组
    POJ 2699 The Maximum Number of Strong Kings ——网络流
    POJ 2396 Budget ——有上下界的网络流
    BZOJ 4650 [Noi2016]优秀的拆分 ——后缀数组
    源码安装python
  • 原文地址:https://www.cnblogs.com/wangshuyu/p/15567908.html
Copyright © 2011-2022 走看看