关于maven的使用

一、POM文件

1.1 pom文件中的repositories节点的作用

repositories节点是配置maven下载jar的中央仓库
maven的.m2/setting.xml里面也可以设置,不过是全局的
pom.xml中的配置只对当前Maven项目有效,在实际引用中,我们想通过一次配置就能让本机所有的Maven项目都能使用自定义的Maven私服。这个时候就要用settings.xml 文件。该文件对本机所有的Maven项目有效

1.2 pom文件中的<scope></scope>标签的作用

作用域为<scope>test</scope>,它的作用是,只能在test目录(通过右键->Make Directory as->Test Sources Root来标记)下的类中导入(即import xxx)依赖中的内容;否则在main->java目录(Sources Root标记的)下就无法导入
Maven之scope详解 以及test测试
Maven之scope详解 以及test测试

1.3 pom文件中的parent标签

maven项目pom.xml中parent标签的使用

1.4 <dependencyManagement>标签的使用

Maven中的dependencyManagement元素提供了一种管理依赖版本号的方式。在dependencyManagement元素中声明所依赖的jar包的版本号等信息,那么所有子项目再次引入此依赖jar包时则无需显式的列出版本号。Maven会沿着父子层级向上寻找拥有dependencyManagement 元素的项目,然后使用它指定的版本号。
dependencyManagement使用简介
SpringBoot官方文档

1.5 Maven使用之packaging标签

项目的打包类型:pom、jar、war
packing默认是jar类型,
<packaging>pom</packaging> ---------> 父类型都为pom类型
<packaging>jar</packaging> ---------> 内部调用或者是作服务使用
<packaging>war</packaging> ---------> 需要部署的项目

Maven使用之packaging标签

二、Maven的依赖冲突

和依赖的引入顺序有关系
加载到第一个库后,会忽略接下来的版本库
查看maven的依赖树,排查依赖冲突(不是要求一个灰色的依赖都不存在,而是需要排查哪些应该加载的依赖被替换掉了)

  1. 排查依赖的语法
<exclusions>
    <exclusion>
        <groupId><groupId>
        <artifactId><artifactId>
    <exclusion>
<exclusions>

eg: spring-boot-starter-web中排除日志包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Maven 篇:正确对待依赖冲突

三、一些总结

3.1 Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

  1. 添加这个依赖无用
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-autoconfigure -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>
  1. 都说是因为mybatis版本太高,降到1.1.1以下可以

3.2 maven依赖冲突检查工具

IDEA的插件Maven Helper


image.png

Maven Helper的用法
选择pom.xml 切换下方Text到Dependency Analyzer

image.png

在IDEA中解决jar包冲突的神操作-必看,秒杀市面方法 (非常详细)

maven依赖冲突检查工具
maven 依赖jar包时版本冲突的解决:mvn dependency:tree -Dverbose
【特别注意】在解决冲突时,不能爆红的就排除,要根据报错信息进行排除,如果之前启动没有报错,而在引入了某个包后启动报错了,那么优先根据错误信息排除新加入依赖的包,我自己在排查依赖的过程中,报错了很多地方,最后只排除了“org.slf4j-log4j12”
mvn命令
mvn官网
mvn clean 与 mvn clean package的区别

3.3 实践心得

  1. [重要]Maven的POM文件parent节点不可以使用properties里面的变量
  2. dependencyManagement节点中的version不会继承parent节点中的version
  3. parent的子pom必须继承,dependencyManagement中的可以按需导入;
    1)如果不写dependencyManagement,子pom会集成parent中的version;
    2)如果即写了dependencyManagement又写了parent,那么按照dependencyManagement中的version。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,063评论 6 510
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,805评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,403评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,110评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,130评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,877评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,533评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,429评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,947评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,078评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,204评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,894评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,546评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,086评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,195评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,519评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,198评论 2 357

推荐阅读更多精彩内容

  • 1.构建出包 mvn clean package 2.引用仓库配置 a.本地配置查找仓库 在settings.xm...
    刘明_d589阅读 264评论 0 1
  • Maven的基本了解 什么是Maven? Maven就是Apache下的一个开源项目。它是用纯java开发的。是一...
    Bcome阅读 2,828评论 0 7
  • Maven编译代码的相关命令 第一、main目录下的主代码编写完毕后,使用Maven进行编译,在项目根目录下运行命...
    加油小杜阅读 1,194评论 0 2
  • 简介 什么是 pom? POM 是 Project Object Model 的缩写,即项目对象模型。 pom.x...
    4ea0af17fd67阅读 465评论 0 1
  • 收到外出的友人发来的所见图。内心喜悦。聊几句后互道晚安,觉得安定温暖。 想起一直思考的问题,最幸运不过是,能有人一...
    章媜阅读 155评论 0 0