美文网首页
Maven包管理和依赖冲突解决

Maven包管理和依赖冲突解决

作者: _刘小c | 来源:发表于2020-05-06 16:31 被阅读0次

首先,可能需要先了解一下JVM的工作原理

JVM的工作非常简单:

执行一个类的字节码,假如在这个过程中,碰到了新的类,那么加载它!

而我们执行 java命令时,使用了-classpath 或 -cp

意思就是指定了类路径,那么JVM就从这些地方找到需要的类

类的全限定类名(⽬录层级)唯⼀确定了⼀个类

jar包是什么:jar包就是把许多类放在⼀起打的压缩包

早期的包管理

Apache Ant

  • ⼿动下载jar包,放在⼀个⽬录中
  • 写XML配置,指定编译的源代码⽬录、依赖的jar包、输出 ⽬录等

缺点

  • 每个⼈都要⾃⼰造⼀套轮⼦
  • 依赖的第三⽅类库都需要⼿动下载,费时费⼒
  • 假如你的应⽤依赖了⼀万个第三⽅的类库呢?
  • 没有解决Classpath地狱的问题

Maven ——划时代的包管理

  • Convention over configuration,约定优于配置,必须强调,Maven远远不⽌是包管理⼯具
  • Maven的中央仓库,按照⼀定的约定存储包
  • Maven的本地仓库,默认位于~/.m2,下载的第三⽅包放在这⾥进⾏缓存

Maven包构成:groupId + artifactId + version

而maven的版本号也是严格的按照语义化版本来管理的

Maven包冲突机制

在开发中,无法避免的会遇到依赖不同版本的同名包的情况

在maven的传递性依赖管理中,是不允许同名不同版本的jar包的

一般在compile时遇到如下问题,那么基本就是包冲突问题了

  • AbstractMethodError
  • NoClassDefFoundError
  • ClassNotFoundException
  • LinkageError

maven在处理这些问题的时候,采用的原则是:最近的胜出,即采用离依赖root越近的

但是有时候maven的这个处理方式并不能满足你的个性化需求,那么我们有几种方法强制指定依赖的版本包

  • 在pom中把想要的依赖写在root下,根据最近原则,则采用用户指定的版本包
  • 在pom中为指定包添加exclusions,强大的Idea的Dependency Analyzer也可以比较轻易的帮你对比版本冲突快捷修改

相关文章

  • Maven中依赖冲突解决方案

    在使用Maven中我们导入jar包坐标时会产生依赖传递,而依赖传递难免会发生jar包间的依赖冲突,解决jar包冲突...

  • maven解决包依赖冲突

    简单记录一下,有时间再做整理。公司内部核心包依赖netty 3.2.3版本,新项目中要使用es连接client包,...

  • Maven解决依赖冲突

    maven依赖冲突以及解决方法 什么是依赖冲突 依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成类...

  • Maven 依赖管理

    管理包依赖是 Maven 核心功能之一,下面通过如何引入 jar 包;如何解析 jar 包依赖;包冲突是如何产生;...

  • java Maven

    1.Maven简介 1.1 Maven是什么 1)统一管理jar 包的工具(处理了jar 依赖和冲突问题)2)方便...

  • 依赖冲突解决办法

    依赖冲突解决办法 maven 的价值 Java开发中,jar的管理由maven来管。maven做的事情: jar统...

  • Maven基础

    Maven介绍 可以管理项目jar包的构建,解决jar包之间的冲突;可以对项目进行管理,比如项目打包等,maven...

  • Maven包管理和依赖冲突解决

    首先,可能需要先了解一下JVM的工作原理 JVM的工作非常简单: 执行一个类的字节码,假如在这个过程中,碰到了新的...

  • java 依赖包冲突,使用maven的Shade方式解决

    java 依赖包冲突,使用maven的Shade方式解决 [TOC] 问题描述 程序中同时使用了hadoop工具包...

  • Maven 类包依赖冲突解决

    有的时候我们在pom.xml导包的时候,可能会引入其他的类库,这样虽然很省事,但是同时也带来了依赖包冲突的可能,即...

网友评论

      本文标题:Maven包管理和依赖冲突解决

      本文链接:https://www.haomeiwen.com/subject/dbmwghtx.html