Java的包管理以及Maven的初步了解

2019-07-18  本文已影响0人  DeeJay_Y

什么是包

类路径 Classpath

传递性依赖

什么是包管理

Maven出现之前

  1. 每个人都需要自己独立造轮子
  2. 依赖的第三方库都需要手动下载,如果依赖众多,那么管理起来极其麻烦
  3. 没有解决classpath hell的问题

Maven包管理

Maven远远不只是包管理工具

Convertion over configuration 约定优于配置

关于版本号也是有约定的,比如5.4.2, 5代表主版本号,一般做了不兼容的API修改才会改,4为此版本号,做了向下兼容的功能新增时添加,2为修订号,做了向下兼容的问题修正时添加。

包冲突

绝对不允许最终的classpath出现同名的不同版本的Jar包

Maven解决包冲突的原则是: 距离最近的包保留。举个例子就是A类依赖B包,B包再依赖C包,又有D类直接依赖C包,那么A类经过多次依赖的C包会丢弃,Maven会默认保留D类依赖的C包。

但是Maven这种默认实现,有时候也会出现问题,因为最近的包可能不是项目所需的包,这种时候可以通过idea的Maven Dependencies进行分析之后进行手动干预。

或者使用指令mvn dependency: tree来查看依赖树(解决冲突之后的依赖树)
如果在idea环境下,可以搜索插件 Maven Helper

  1. 一般的解决方法是,当分析依赖完成后,我们清楚的知道了我们要引的是哪个版本的哪个包之后,直接在pom中引入,因为Maven是距离最近优先,所以其他的冲突包不会再被引用。
  2. 通过修改pom配置告知Maven,即添加exclusions排除不要的包。

Maven中的scope

常用的scope有3种: test compileprovided

Maven还是一个自动化构建工具

《Maven实战》

上一篇 下一篇

猜你喜欢

热点阅读