简介
Maven 是当前最受欢迎的 Java 项目管理构建自动化综合工具,主要功能:
- 统一开发规范与工具
- 统一管理 Jar 包
仓库
Maven 根据坐标寻找构件时,首先会查看本地仓库,若本地仓库存在此构件则直接使用;若本地仓库不存在此构件,就会去远程仓库查找,查找到下载到本地仓库再使用。
分类
- 本地仓库:默认位置
${user.home}/.m2/repository
,可通过settings.xml
自定义 - 中央仓库:Maven 自带的远程仓库,
http://repo2.maven.org/maven2/
- 私服:一种特殊的远程仓库,为节省带宽和时间,应在局域网内架设一个私有仓库服务器,用其代理所有外部的远程仓库。
资源库
- 中央仓库资源:http://mvnrepository.com/ 、 https://search.maven.org/
- 阿里云资源:http://maven.aliyun.com/nexus/content/groups/public/
核心概念
坐标
groupId,artifactId,version 三个元素是项目的坐标,唯一的标识这个项目。
- groupId:项目所在组,一般是组织或公司
- artifactId:是当前项目在组中的唯一 ID,一般是项目名称
- version:表示版本
1 | <groupId>co.yixiang</groupId> |
打包
- jar:默认打包方式,我们可以在其他工程的 pom 文件中去引用它
- war:这种打包方式是将工程都部署在服务器上,用户通过浏览器直接访问
- pom:用在父级工程或聚合工程中,用来做 jar 包的版本控制
1 | <packaging>pom</packaging> |
概念模型
生命周期
Clean:目的是清理项目
- pre-clean
- clean:删除前一个构建生成的所有文件
- post-clean
Default:定义了真正构建时所需要执行的所有步骤
- compile:编译
- test:测试
- package:使用已编译的代码,并将其打包成可部署格式
- verify:运行检查以验证包是否有效
- install:将该包安装到本地仓库
- deploy:将项目输出部署到远程仓库
Site:目的是建立和发布项目站点
- pre-site
- site:生成项目的站点文档
- post-site
- site-deploy:将生成的站点文档部署到指定的 web 服务器
标准项目结构
核心思想:约束优于配置
1 | . |
版本规范
- SNAPSHOT:快照版本,开发测试阶段,不稳定版本
- LATEST:某个特定构建的最新发布版本
- RELEASE:正式发布版本,稳定版本