《Maven实战》 阅读笔记

无Maven不项目,这是我的口号,但是一直没有系统的去看书,前段时间把《Maven实战》过了一遍做了些笔记,方便后面查阅

每个项目都有自己的坐标

  • groupId
  • artifactId
  • version
  • packaging
  • classifier


    1.png
2.png
  • install 安装在本地
  • deploy 打包发布到远端

依赖范围

3.png

范围类型有: 编译、测试、运行 三种classpath

  • compile,默认值,对编译、测试、运行三种classpath都有效;
  • test: 测试依赖范围,只对测试classpath有效,在编译主代码或者裕兴项目的使用是则无法使用此类依赖。
  • provided: 已提供依赖范围 只在编译和测试classpath有效,运行时无效。
  • runtime: 运行时依赖范围,对测试和运行classpath有效,编译无效;
  • system: 系统依赖范围,


    4.png

(如第三方给的jar包,且仓库中心又没有,可以使用system范围,如)

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/lib/jsoup-proxy.jar</systemPath>
</dependency>
  • import(Maven 2.0.0及以上):导入依赖范围。不会对三种classpath产生实际的影响;(不够严谨,类似complie还是什么?)


    5.png

传递性依赖

[图片上传失败...(image-592326-1560672958805)]

依赖调解

两个依赖关系
A->B->C->X(1.0)
A->D->X(2.0)
两个依赖都间接来到X,
maven引用原则(依赖调解(Dependency Mediation))

  • 第一原则:路径最紧者优先 即 x(2.0)会被使用

A->B->Y(1,0)
A->C->Y(2,0)

  • 第二原则: 在满足第一原则的前提下第一声明者优先(就近原则) 即 Y(2,0)会被使用

可选依赖

7.png

[图片上传失败...(image-b3618b-1560672958805)]

9.png
10.png

仓库的布局

12.png

生命周期

  • clean:清理项目


    13.png
  • default: 构建项目


    14.png
  • site: 建立项目站点


    16.png
15.png

继承

正确的设置relativePath很重要


17.png

可继承的pom元素


18.png

依赖范围 import的用法


19.png

插件跟依赖一样可以使用*Management来管理


20.png

21.png

反应堆

22.png
23.png
24.png
25.png

对于裁剪功能,需要用的时候可以查阅文档

测试

26.png

27.png

跳过测试
mvn package -DskipsTests

28.png
29.png
30.png

注意:上述几种命令行动态指定测试类的方法都应该只是临时使用,如果长时间只运行项目的某几个测试,那么测试就会慢慢失去其本来的意义。

加入测试

31.png

也可以使用excludes排除一些测试


32.png

WEB应用

33.png

版本号定义约定


34.png

[图片上传失败...(image-676088-1560672958805)]

Maven属性

内置属性:

${basedir} 标识项目根目录即包含pom.xml 文件的目录;
${version}标识项目版本;

POM属性:

  • ${project.artifactId} 对应了<project><artifactId>元素的值
  • ${project.build.sourceDirectory} 项目的主源码目录 默认src/main/java/
  • ${project.build.testSourceDirectory} 项目的测试源码目录,默认为src/test/java
  • ${project.outputDirectory} 项目主代码编译输出目录,默认为target/classes
  • ${project.testOutputDirectory}: 项目测试代码编译输出目录 ,默认为target/testclasses/
  • ${project.groupId}: 项目的groupId
  • ${project.artifactId} 项目的artifactId
  • ${project.version} 项目的version 与${version}等价
  • ${project.build.finalName} 项目打包输出文件的名称,默认为${project.artifactId}-${project.version}

自定义属性

可以通过<properties><xxx>val</xxx></properties>

Setting属性

36.png

Java属性变量

[图片上传失败...(image-d9785b-1560672958805)]

环境变量属性

38.png

最佳实践

  • artifactId 使用实际项目名称作为artifactId的前缀
  • 优化依赖: 使用 dependency:listdependency:tree 来查看依赖关系
  • mvn clean install 在执行真正的项目构建之前清理项目是一个很好的实践
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容

  • Maven的基本了解 什么是Maven? Maven就是Apache下的一个开源项目。它是用纯java开发的。是一...
    Bcome阅读 2,770评论 0 7
  • 2018年3月20日14点29分 前言 接着上一篇JSON的文章,我又算是系统的学习了一遍Maven吧 之前对Ma...
    天下无敌强阅读 674评论 0 2
  • 坐标 maven管理项目依赖的底层基础-坐标。坐标元素:groupId、artifactId、version、pa...
    破晓追风阅读 427评论 0 0
  • 姓名:魏浩~公司:杭州龙居门业有限公司 【日精进打卡第18天】 【知~学习】 《六项精进》1遍共1遍 《大学》1遍...
    A0魏浩富贵龙别墅门阅读 245评论 0 0
  • 胖婶和花婶是多年的街坊邻里,家境均普通,各育有一女,年龄相仿,都已到出嫁的年纪。 年初,两家姑娘就都定下了婚期,时...
    俪米阅读 390评论 4 6