zoukankan      html  css  js  c++  java
  • 着重基础之—构建工具—Maven的依赖管理

    着重基础之—构建工具—Maven的依赖管理

      项目构建利器Maven给我们开发人员带来了极大的便利,从繁琐的jar包管理中脱身的程序员终于可以有时间再进入另一个坑了。

      我今天要给大家分享的内容是我在实际开发中遇到的一个问题,Maven的依赖管理,以及冲突管理。相关内容其实网上已经有了很多,我在此记录,只是想强化下记忆。

      依赖单元:Maven依赖是使用Maven坐标来定位的,而Maven坐标主要由GAV(groupId, artifactId, version)构成。最简单的依赖:

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.6</version>
    </dependency>

      Pom.xml中,当我们管理多个Maven依赖模块时,dependencyManagement在解决多maven模块管理和依赖冲突方面发挥作用。

      dependencyManagementdependencies正确的做法是:

      1. 在父模块中使用dependencyManagement配置依赖

      2. 在子模块中使用dependencies添加依赖

      dependencyManagement实际上不会真正引入任何依赖,dependencies才会。但是,当父模块中配置了某个依赖之后,子模块只需使用简单groupId和artifactId就能自动继承相应的父模块依赖配置。

      来看一个例子:注意<dependencyManagement>和<dependencies>俩个配置节。

    <dependencyManagement>
            <dependencies>
                <dependency>
                    <!-- Import dependency management from Spring Boot -->
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>1.5.6.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
    </dependencyManagement>
    <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <artifactId>spring-test</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.10.RELEASE</version> </dependency> </dependencies>

      冲突的解决: 首先,如何定位冲突的位置,利用intelij idea工具来查看引入jar包的依赖图谱:

      (1)打开pom.xml文件; 
      (2)在pom文件内部点击右键; 
      (3)选择Diagrams(或紧挨着下面的maven)–Show Dependencies; 
      (4)这时就可以看到maven依赖图了,但此时的图只是一个缩略图(放大,就可以看到详细的依赖关系了)。

      定位了冲突后,就可以通过依赖排除来排除冲突依赖,我们来看个示例:

      依赖排除的解释:任何可传递的依赖都可以通过 "exclusion" 元素被排除在外。举例说明,A 依赖 B, B 依赖 C,因此 A 可以标记 C 为 “被排除的”。

    <dependency>
        <groupId>com.test.rose.perfcounter</groupId>
        <artifactId>test-rose-perfcounter</artifactId>
        <version>${test-common-version}</version>
        <exclusions>
            <exclusion>
                <artifactId>spring</artifactId>
                <groupId>org.springframework</groupId>
            </exclusion>
            <exclusion>
                <artifactId>spring-webmvc</artifactId>
                <groupId>org.springframework</groupId>
            </exclusion>
        </exclusions>
    </dependency>

      Maven的学习资料站点:http://wiki.jikexueyuan.com/project/maven/manage-dependencies.html

     

      

  • 相关阅读:
    Jupyter notebook中的Cell and Line Magics
    numpy中array数组对象的储存方式(n,1)和(n,)的区别
    机器学习中的标准化方法(Normalization Methods)
    matplotlib添加子图(拼图功能)
    matplotlib.pyplot.plot详解
    一行代码让你的python运行速度提高100倍
    一个简单的Shell脚本(解决windows上文本在macos上乱码问题)
    解决Mac上打开txt文件乱码问题
    LaTeX中常用代码段snippets(持续更新)
    LaTeX实时预览中文
  • 原文地址:https://www.cnblogs.com/mbailing/p/maven.html
Copyright © 2011-2022 走看看