zoukankan      html  css  js  c++  java
  • Java第四十五天,Maven高级篇(一),依赖冲突、pom常见标签

    一、Jar 依赖包冲突问题

    1.产生冲突的根源

    有多个 jar包 对同一 jar包 同时有依赖关系,而且二者对该 依赖jar 包的版本不一致,最终导致产生 jar包依赖 冲突

    2.解决办法

    (1)第一声明优先原则

    哪个jar包的坐标先定义,该 jar包 就是先声明的;先声明的 jar包 坐标下的依赖包可以优先进入项目中

    (2)路径近者优先原则

    直接依赖 路径比 传递依赖 路径近,那么最终项目进入的 jar包 会是路径近的直接依赖

    • 直接依赖 ===> 项目中直接导入的 jar包 就是该项目的直接依赖包;
    • 传递依赖 ===> 项目中并没有直接导入的  jar包 也由其他 直接依赖jar包 的依赖而被Maven 自动导入

    (3)直接排除法

    通过 <exclusion> 标签排除多余的依赖包

    • <exclusion> ===> 当我们要排除某个 jar包 依赖包的时候,在配置 <exclusion> 标签的时候,内部可以不写版本号;因为此时依赖包使用的版本号默认和本 jar包 一样
    <dependency>
          <groupId>项目组织</groupId>
          <artifactId>项目</artifactId>
          <version>项目版本</version>
          <exclusions>
            <exclusion>
              <groupId>要排除的项目所在组织</groupId>
              <artifactId>要排除的项目</artifactId>
            </exclusion>
          </exclusions>
    </dependency>

    二、pom.xml 常见标签详解

    Maven 工程是可以分为父子依赖关系的,凡是依赖别的项目后,拿到别的项目的依赖包,都属于传递依赖

    • <dependencyManagement> ===> 锁定 jar包 版本;此标签只有锁定 jar包 版本的作用,并没有导入 jar包 的功能
    • <dependencies> ===> 父级依赖;可存放若干 <dependencie> 标签
    • <dependencie> ===> 子级依赖;导入 jar包
    • <build> ===> Project Build,全局配置;即是<project>的直接子元素
    • <build> ===> Profile Build,配置;即是<profile>的直接子元素
    • <plugins> ===> 父级插件;可存放若干 <plugin> 标签
    • <plugin> ===> 子级插件;导入插件
  • 相关阅读:
    kvm初体验之四:从Host登录Guest的五种方式
    kvm初体验之三:vm的安装及管理
    CentOS Wifi Connection
    kvm初体验之二:安装
    kvm初体验之一:参考文档
    有6种不同颜色的球,每种球有无数个。现在取5个球,求取出5、4、3、2种不同颜色球的概率分别为多少
    求两个字符串的最长连续子串
    不用除法来实现整数的除法运算
    抽象类和接口的区别
    o(n)的时间复杂判断回文数
  • 原文地址:https://www.cnblogs.com/viplanyue/p/13573667.html
Copyright © 2011-2022 走看看