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> ===> 子级插件;导入插件
原文地址:https://www.cnblogs.com/viplanyue/p/13573667.html