Maven日常
Posted 少年不年少
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven日常相关的知识,希望对你有一定的参考价值。
一、什么是Maven?
如果没有Maven,可能会经历下面的这些情况:
1、如果要使用spring,需要到spring官网下载jar包;如果使用hibernate,需要到hibernate的官网下载jar包;如果使用log4j,需要去到log4j的官网下载jar包....
2、当某些jar包有依赖的时候,还要去下载对应的依赖jar包
3、当jar包依赖有冲突时,不得不一个一个的排查
4、执行构建时,需要使用ant写出很多重复的任务代码
5、当新人加入开发时,需要拷贝大量的jar包,然后重复进行构建
6、当进行测试时,需要一个一个的运行,检查
Maven,提供了三种功能:
1、依赖的管理:仅仅通过jar包的几个属性,就能确定唯一的jar包,在指定的文件pom.xml中,只要写入这些依赖属性,就会自动下载并管理jar包。
2、项目的构建:内置很多的插件与生命周期,支持多种任务,比如校验、编译、测试、打包、部署、发布
3、项目的知识管理:管理项目相关的其他内容,比如开发者信息,版本等等
二、Maven如何管理jar包?
关于jar包的坐标,有过使用经验的会了解,maven是通过groupId,artifactId,以及version确定一个唯一的jar包。
如:常用的Junit的声明如下:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
Maven下载jar包的过程:
在Maven中会涉及到集中仓库:
1工作空间,即我们的项目工程,这里面可能会放着pom.xml文件,这个pom.xml就是maven的配置文件
2本地仓库,本地仓库用于存放jar包,其实jar包并不是直接放入工作空间的,它是存放在本地仓库,然后在执行发布打包的时候,添加依赖路径
3私库,私库是使用者自己搭建的maven仓库,用于缓解频繁从外网下载jar包资源的压力,而且使用私库作为缓存层,也相对安全一些。
4共享仓库,一些书中提到的中央仓库或者一些现场用的镜像网站都属于这种,国内比较著名的oschina以及163都是很不错的maven仓库。
当我们在pom中声明了依赖关系后,参考上面的图:
1maven在执行相关的任务时,会先去本地仓库查看是否有该资源,如果有的话,判断版本是否正确,如果一切都没有问题则直接使用;否则执行下一步。
2maven会去配置的共享仓库中查找,如果找到就拷贝到本地仓库中,找不到则会给出相关的提示。
3maven在本地如果搭建了私库,则会去私库中查找,找到就拷贝到本地仓库;找不到就会去共享仓库中查找,然后放入私库和本地库。有了私库,局域网内的开发者可以共享依赖,就不用每个人都去外网下载jar包浪费宽带了。
关于本地仓库和共享仓库的配置都在setting.xml中,这个文件位于conf中,如果没有则拷贝一份即可。
其中本地仓库的配置为:
<localRepository></localRepository>
默认是在用户的本地目录/.m2/repository中
共享仓库的地址配置为:
<mirrors>
<mirror>
<id>CN</id>
<name>OSChina Central</name>
<url>http://maven.oschina.net/content/groups/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
三、Maven的生命周期与阶段
Maven中有三大生命周期,他们相互独立,分别是:
1clean 清理
2default 构建
3site 建站
一般来说,clean和default比较常用。
每个生命周期又有不同的阶段,阶段按顺序执行,并且可以指定执行结束的阶段。构建的时候,会依次从嘴上粘的阶段执行到指定的那个阶段。
如clean有三个阶段:
1 pre-clean 执行清理前要完成的工作
2 clean 清理上次构建生成的文件
3 post-clean 执行清理后需要完成的工作
当我们输入 mvn clean的时候,执行的是pre-clean两个阶段
default的阶段比较多:
1 validate 2 initialize 3 generate-sources 4 process-sources 5 generate-resources 6 process-resources 7 compile 8 process-classes 9 generate-test-sources 10 process-test-sources 11 generate-test-resources 12 process-test-resources 13 test-compile 14 process-test-classes 15 tet 16 prepare-package 17 package 18 pre-integration-test 19 integration-test 20 post-integration-test 21 verify 22 install 23 deploy
看名字大概就能理解,当执行mvn install的时候,实际会执行validate-->initialize-->...-->verify-->install等二十几个阶段。
为了操作方便,不同的声明周期可以在一起执行,比如mvn clean install,会先执行clean的阶段,在执行install的阶段。
在IDE开发环境中,当我们Run as的时候,就可以执行maven clean进行清理,或者执行maven install进行构建,也可以执行maven build同时执行clean和install两个任务。
以上是关于Maven日常的主要内容,如果未能解决你的问题,请参考以下文章
maven web项目的web.xml报错The markup in the document following the root element must be well-formed.(代码片段
Jacoco和Tycho surefire的Eclipse RCP插件代码介绍