• 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> ===> 子级插件;导入插件
  • 相关阅读:
    mysql
    新建mysql容器
    Storm中并行度原来是这样计算的(1.0.1版本)
    集中式系统和分布式系统
    hadoop错误:Does not contain a valid host:port authority
    Linux配置ntp时间服务器(全)
    vi/vim 消除搜索后的关键字高亮
    雄鹰与蜗牛
    如何查看HBase的HFile
    MemoryUsage:监测java虚拟机内存使用
  • 原文地址:https://www.cnblogs.com/viplanyue/p/13573667.html
Copyright © 2020-2023  润新知