优点:
1.简化了项目依赖管理:jar包管理,防止了冲突
2.便于与持续集成工具(jenkins)整合
3.便于项目升级,无论是项目本身升级还是项目使用的依赖升级。
4.有助于多模块项目的开发,一个模块开发好后,发布到仓库,依赖该模块时可以直接从仓库更新,而不用自己去编译。
5.maven有很多插件,便于功能扩展,比如生产站点,自动发布版本等
Maven项目类型:
jar: java工程, 项目最终被打包为jar包
war: web工程, 项目被打包为war包
pom: 逻辑工程, 父工程必须是pom类型的工厂. pom工程中不写java代码, 值用于进行子工程的管理.
作用域图:
常用指令:
clean:清除maven项目下的target目录中的class和本地仓库中已打包的文件。
validate:验证工程是否正确,所有需要的资源是否可用。
===========================================
compile:即编译项目中的java文件,并存放在项目的编译目录。
test: 即运行项目中的测试用例文件,如果测试用例未通过,也会打包失败,这里test过程可以在pom中通过配置跳过。
package:将本地编译好的文件打包为war 或者jar。
verify: 运行任何检查,验证包是否有效且达到质量标准。
install:将打包的代码存放到本地maven仓库,可供本地其它项目依赖使用。
===========================================
site:生成项目报告,站点,发布站点。
deploy:将打包在本地仓库中的项目发布到服务器,供他人依赖使用
1依赖
假设两个工程A和B, A当前需要使用B的功能, 我们就说A依赖B. 依赖关系是一个比较简单的关系. 依赖关系只需要通过在pom文件中指定坐标即可实现.
2继承
假设两个工程A和B, B工程是在A工程基础上做的扩展. 此时, B工程继承了A工程. 继承是比依赖更紧密的一种关系. 要求父工程必须是一个pom工程. 在继承关系中, 子工程明确父工程, 但是父工程不明确子工程.
3聚合(重点)
多个Model共同组成一个Project. 对外看起来是一个工程. 必须先由继承关系. 在聚合工程中, 是一个双向的关系.