《Maven实战》|《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有效,编译无效;
- 【《Maven实战》|《Maven实战》 阅读笔记】system: 系统依赖范围,
文章图片
4.png
org.jsoup
jsoup
1.0
system
${project.basedir}/src/lib/jsoup-proxy.jar
- 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->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.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}
val
Setting属性

文章图片
36.png Java属性变量 [图片上传失败...(image-d9785b-1560672958805)]
环境变量属性

文章图片
38.png 最佳实践
- artifactId 使用实际项目名称作为artifactId的前缀
- 优化依赖: 使用
dependency:list
或dependency:tree
来查看依赖关系 -
mvn clean install
在执行真正的项目构建之前清理项目是一个很好的实践
推荐阅读
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 《跨界歌手》:亲情永远比爱情更有泪点
- 诗歌:|诗歌: 《让我们举起世界杯,干了!》
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- 人间词话的智慧
- 《一代诗人》37期,生活,江南j,拨动心潭的一泓秋水
- 广角叙述|广角叙述 展众生群像——试析鲁迅《示众》的展示艺术
- 书评——《小行星》