1.什么是 Maven
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。
即是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
1.1Maven的核心
- 依赖管理:对项目需要使用到的jar包进行管理。
- 项目构建:项目在编码完成后,对项目进行编译、测试、打包、部署。
2.常用的maven命令
mvn archetype:generate 创建Maven项目
mvn compile 编译源代码
mvn deploy 发布项目
mvn test-compile 编译测试源代码
mvn test 运行应用程序中的单元测试
mvn site 生成项目相关信息的网站
mvn clean 清除项目目录中的生成结果
mvn package 根据项目生成的jar
mvn install 在本地Repository中安装jar
mvn eclipse:eclipse 生成eclipse项目文件
mvnjetty:run 启动jetty服务
mvntomcat:run 启动tomcat服务
mvn clean package -Dmaven.test.skip=true:清除以前的包后重新打包,跳过测试类
3.生命周期
- maven对构建(build)的过程进行了抽象和定义,这个过程被称为构建的生命周期(lifecycle)。
- 生命周期(lifecycle)由多个阶段(phase)组成,每个阶段(phase)会挂接一到多个goal。
- goal是maven里定义任务的最小单元,相当于ant里的target。
- 可以理解maven为一个插件的容器,每个插件绑定到某个goal执行
maven有clean、default、site三种生命周期,clean生命周期在进行真正的构建之前进行一些清理工作。default生命周期定义了真正构建时需要执行的步骤,它是所有生命周期中最核心的部分。site生命周期生成项目报告,站点,发布站点。三套生命周期是互相独立的,每种生命周期的阶段是前后依赖的。执行某个阶段,则会先依次执行该生命周期的前面阶段。
3.1clean生命周期:
pre-clean:执行一些清理前需要完成的工作
clean:清理上一次构建生成的文件
post-clean:执行一些清理后需要完成的工作
3.2default生命周期:
validate - 验证项目是否正确,并且所有必要的信息是否有效
compile - 编译项目的代码
test - 使用合适的单元测试框架测试源码。这些测试代码并不要求打包或者部署
package - 获取编译后的代码,并且把它们打成可派发的格式,比如JAR.
verify - 运行集成测试,以确保项目符合质量标准
install - 安装包到本地的repository中,以便其他项目可以依赖这个项目。
deploy - 在构建的结束阶段,把最终包上传到远端的repository中,以便其他的项目和开发者可以使用。
3.3site生命周期
pre-site执行一些在生成项目站点之前需要完成的工作
site生成项目站点文档
post-site执行一些在生成项目站点后需要完成的工作
site-deploy将生成的项目站点发布到服务器上