一、maven命令
mvn help:system 打印出所有的系统属性和环境变量
mvn test :调用default生命周期的test阶段,实际执行test以及之前所有阶段
mvn test-compile:编译测试代码,compile之后生成的target文件夹,主程序便已在classes文件夹下面,测试程序代码放在test-classes文件夹下,测试程序代码放在test-classes文件夹下。
mvn clean : 删除target文件夹
mvn clean install : 调用clean生命周期的clean阶段和default的install阶段,实际执行pre-clean和clean,install以及之前所有阶段
二、maven 引用构建(jar)的流程
1.mvn clean 清理target文件夹
2.mvn compile 进行源码的编译
3.编译的时候 如果程序用到一些第三方的jar包,就会去pom.xml进行查找是否引入该依赖包的坐标(groupId、artifactId、version)
4.如果引入的依赖包坐标不对或者没有,就会提示相应的错误信息
5.如果引入的依赖包坐标正确,就会去本地仓库集中进行查找
6.如果在本地仓库中找到了,就可以将依赖的jar添加到classpath路径中
7.如果找不到,就会去中央远程仓库进行下载、并将其放入本地仓库供项目使用。
三、maven镜像仓库
maven中央远程仓库服务器在 国外,国内对国外网站进行屏蔽,所有会将下载好的jar提供给我们下载,
著名的是maven 开源镜像:http://maven.oschina.net/content/groups/public/
四、maven 依赖范围:
范围名称 | 编译 | 测试 | 运行 | eg |
compile | √ | √ | √ | |
test | √ | junit | ||
provided | √ | √ | 典型的servet api | |
runtime | √ | √ | jdbc的驱动实现 | |
system | 系统的依赖范围,使用时必须通过systemPath元素显示制定依赖文件的路径,不依赖于maven仓库解析,所以可能会造成构建不可移植。慎用 |
范围的具体定义,例:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
五、maven的生命周期
maven生命周期就是对所有的构建过程进行抽象和统一。包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。
此外maven的插件机制是完全依赖maven的生命周期的,因此理解生命周期至关重要,初学者容易将maven的生命周期看成一个整体,其实不然。这三套生命周期分别是
clean lifecycle 在进行真正的构建之前进行一些清理工作。
default lifecycle 构建的核心部分,编译、测试、打包、部署等。
site lifecycle 生成项目报告,站点、发布站点
1、clean生命周期:清理项目,包含三个时期。
1)pre-clean:执行清理前需要完成的工作
2)clean:清理上一次构建生成的文件
3)post-clean:执行清理后需要完成的工作
2、default生命周期:构建项目,重要的时期如下。
1)validate:验证工程是否正确,所有需要的资源是否可用。
2)compile:编译项目的源代码。
3)test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
4)Package:把已编译的代码打包成可发布的格式,比如jar。
5)integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
6)verify:运行所有检查,验证包是否有效且达到质量标准。
7)install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
8)Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
基本上,根据名称我们就能猜出每个阶段的用途,关于其它阶段的解释,请参考http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
3、site生命周期:建立和发布项目站点,时期如下
1)pre-site:生成项目站点之前需要完成的工作
2)site:生成项目站点文档
3)post-site:生成项目站点之后需要完成的工作
4)site-deploy:将项目站点发布到服务器
各个生命周期相互独立,一个生命周期的阶段前后依赖
运行任何一个阶段,它前面的所有阶段都会被运行。