《Maven实战》的读书笔记

http://www.taobaotest.com/blogs/show/2509

浏览了下《Maven实战》的读书笔记。以下纯粹个人YY,便于理解,不谨慎的言辞轻拍。

l  maven是什么?

maven就是一个pom文件,一些命令,一个仓库?maven是一个构建工具,自动化一些琐碎的手动构建操作,包括清理、编译、测试、生成报告、打包、部署。Maven又是一个规范,规范了构建过程。元素、仓库都是用来规范的手段。

l  maven的安装

用过都知道。首先需要有jdk1.4及以上环境。下载maven包并解压到指定目录,之后设置maven环境变量指向该路径即可。

l  坐标

为了要实现自动化构建,就需要统一规范。Maven的每个构件都需要定义自己唯一的坐标,通过这些坐标就能按照一定的规定方式找到对应的构件。

Maven的坐标包括:groupIdartifactIdversionpackagingclassifier

groupId:定义当前maven项目隶属的实际项目;

artifactId:定义实际项目中的一个maven项目(模块);

version:定义当前所处的模板;

packaging:定义maven项目的打包方式;

classifier:定义构建输出的一些附属构件。

这样只要给定了这几个坐标,就能找到对应的构件。

l  仓库

构建?大概就是在特定的时候找到特定的资源完成特定的功能。特定的时候对应生命周期、特定的对应构件、特定的功能对应插件。为了自动化找到完成构建的各个构件,Maven在自己的仓库里存储了所有maven项目共享的构件。这样具体的项目就不用存储它自己的依赖,而只需要声明所需依赖的坐标,就可以自动化的根据这些坐标找到仓库中的构件。仓库中的路径与坐标对应,大致为groupId/artifactId/version/ artifactId - version .packaging

l  依赖

依赖对应的元素Dependencies是dependency的负数形式,非常形象,它可以包含一个或者多个dependency。依赖也有它的一组子元素:

groupIdartifactIdversion:依赖的基本坐标;

type:依赖的类型

scope:依赖的范围,用来控制依赖于编译classpath、测试classpath、运行classpath的关系,有compiletestprovidedruntimeimport

依赖是可传递的,如A->B,B->C,那么A->C。传递性依赖简化了依赖管理,但在带来好处的同时也给项目带来了很多隐性的依赖,也就是我们平时总会遇到的依赖冲突,经常需要排除依赖(exclusions)。

    排查依赖最常用到的就是mvn dependency:tree命令,将当前项目的依赖树打出来查看。搜索发生冲突的依赖,排除其中多个依赖只留下唯一一个。

l  继承

类似java的继承思想,抽取重复的配置,消除重复。Parent元素声明父模块,parent下的子元素groupId、artifactId、version定位父模块坐标。 

l  生命周期和插件

命令行的输入往往对应了生命周期。如我们输入mvn clean就对应调用了clean生命周期的clean阶段;mvn test 则调用了defalt生命周期的test阶段。生命周期是抽象的概念,这也是maven规范的一部分,对所有的构件过程进行了统一。它定义了各个构建步骤的次序,具体的行为由插件来完成。每个步骤绑定一个或多个插件。每个插件又会有多个目标,每个目标对应一个功能。比如上面提到的dependency:tree,dependency是插件前缀,tree是插件目标。

 

Pom文件示例如下图所示:

第1行,是xml文档的版本和编码方式;

第2-4行,project元素是所有pom.xml的根元素,声明了一些命名空间及xsd元素;

第5-9行,用parent继承了父模块,用groupId、artifactId、version定义了父模块的坐标;

第10-13行,用groupId、artifactId、packaging、version定义了项目的坐标;

第16-33行,用dependencies定义了多个依赖。用eclusions排除了不需要的依赖;

第35行,用build、plugins在声明插件的时候进行一个全局配置,这样所有改目标的任务都会使用这些配置。由于maven的compiler插件默认只支持java1.3,所以需要配置支持1.6版本。

 

示例pom文件


综述,Maven源码大概就是这样一段代码,定义了规范之后,识别这些定义的元素,调用一个个插件,完成一个个构件步骤、过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值