目录
什么是Maven:
Maven的优缺点:
优点:
缺点:
Maven生命周期:
Maven坐标
Maven常见的依赖范围
依赖的传递:
什么是Maven:
译为“专家”、"内行“,是Apache基金会下的一个纯Java开发的开源项目。基于项目对象模型(缩写:POM)概念,主要用于基于Java开发的项目创建,依赖管理和项目信息管理。
Maven的优缺点:
优点:
- 对第三方依赖库进行统一的版本管理
- 统一项目的目录结构
- 统一软件构建阶段
- 便于项目升级,无论是项目本身升级还是项目使用的依赖升级。
- 有助于多模块项目的开发,一个模块开发好后,发布到仓库,依赖该模块时可以直接从仓库更新,而不用自己去编译。
- maven有很多插件,便于功能扩展,比如生产站点,自动发布版本等
- 自动生成项目网站和报表
缺点:
- maven是一个庞大的构建系统,学习难度大
- maven采用约定优于配置的策略(convention over configuration),虽然上手容易,但是一旦出了问题,难于调试。
- 当依赖很多时,m2eclipse 老是搞得Eclipse很卡。
- 中国的网络环境差,很多repository无法访问,比如google code, jboss 仓库无法访问等。
1.clean周期:(清理)主要用于清理上一次构建产生的文件,可以理解为删除target目录
2.默认周期:真正进行项目编译导报等工作阶段
- validate:验证项目是否正确
- compile:编译,编译项目的源代码*****
- test:测试,junit这些测试不应该要求代码被打包或部署
- package:进行打包。
- java工程------------.jar
- javaweb工程------.war
- verify:验证,对集成测试结果执行检察
- install:安装****
- 所有的项目都可以编程jar包*(依赖)
- deploy:部署,及那个最终的包赋值到远程储存库,和其他开发人员共享(maven私服)
3.site周期:(站点)
- site产生项目的站点文档
- site-deploy将项目的站点文档部署到服务器
Maven坐标
GroupId:团体组织标识符,它一般情况下以创建这个组织的名称的逆向域名开头。
ArtifactId:项目名。单独项目的唯一标识符。
Version:版本
通过这三个向量来定位Maven仓库中其jar包所在的位置,把对应的jar包引入到工程中
Maven常见的依赖范围
- compile:默认。编译范围,编译,测试,运行都有效。参与打包,安装。
- test:测试范围,只有在test范围下才能用,不参与打包,安装。
- provided:编译和测试,不参与打包,安装。
- runtime:运行,只参与运行。
- system:废弃。系统。
- import:废弃。引入。
依赖的传递:
比如所demo01的项目中引入了mysql,servlet,fastjson,codec依赖,那我把demo01install到了我的本地仓库,或者是maven私服,如果其他成员通过GAV引入了我的demo01,demo01中的mysql,servlet,fastjson,codec会不会一起引入进来???
!!!!!会!!!!!