1、maven的优缺点(换个角度就是为什么需要maven?)
借助于maven可以将一个大的项目拆分成很多工程
借助于maven,可以将jar包仅仅保存在仓库中,有需要使用的工程,引用这个文件接口,并不需要真的把jar包复制过来
借助于maven可以以一种非常规范的方式来下载jar包
jar包间的依赖关系,maven已经帮你做好管理了
学习难度大
2、maven常见的依赖范围
compile: 编译、运行、打包项目+测试用例 都需要用到该依赖
test: 编译、运行测试用例
provided:编译和测试有效,不会打包进发布包中(典型的例子为servlet-api,一般的web工程运行时都使用容器的servlet-api)
runtime:只在运行测试用例和实际运行时有效
system:由于版权限制等原因,不是所有的jar包都存储在中央仓库中。scope取值为system时,表示依赖来自本地系统,需要配合标签systemPath(用于指定依赖路径)使用
3、maven的生命周期
Maven的生命周期就是为了对所有的构建过程进行抽象和统一。包括项目的清理,初始化,编译,测试,打包,集成测试,验证,部署和生成站点等构建步骤。
Maven提供了三套独立的生命周期:clean, default 和 site
clean 生命周期:清理项目,删除前一次构建在target文件夹下的各种jar包
- pre-clean:执行一些清理前需要完成的工作
- clean:清理上一次构建生成的文件
- post-clean:执行一些清理后需要完成的工作
default生命周期:定义了真正构建项目中需要执行的所有步骤
- validate:验证工程是否正确,所有需要的资源是否可用。
- compile:编译项目的源代码。
- test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
- Package:把已编译的代码打包成可发布的格式,比如jar
- integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
- verify:运行所有检查,验证包是否有效且达到质量标准。
- install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用
- Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。