定义
Maven是Apache公司的开源项目 是项目构建工具,用来依赖管理,基于POM项目对象模型
Maven环境的部署
一. 解压部署Maven核心程序
- 将maven解压到一个非中文无空格的目录下
- 配置环境变量
M2_HOME
path : %M2_HOME%\bin
. - 查看Maven版本信息验证安装是否正确
mvn -v
二.修改本地仓库及配置
- 默认本地的仓库位置为: ~.m2\repository
- 指定maven默认仓库位置
在maven的安装路径的conf文件夹中有一个settings.xml ,将localRepository标签中的地址设置为你想要设置的仓库位置
<localRepository>D:UserData\repo</localRepository>
- 设置阿里云的镜像
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
三 构建(Build)的生命周期
- 校验 validate :验证项目是否正确且所有必须信息是可用的
- 初始化 initialize: 初始化构建状态,比如设置属性值。
- 编译 compile :将java源程序编译成class字节码文件
- 测试 test :自动测试 ,自动调用junit单元测试
- 打包 package: 动态web工程打成war包 java工程打成jar包
- 集成测试 :integrationTest
- 安装 install : 将打包得到的文件复制到本地仓库的指定位置
- 部署 deploy : 将动态生成从war包复制到servlet容器的指定目录下,使其可以运行
四 Maven工程目录结构
- 创建约定的目录结构
工程名
└─src 源码
├─main 主程序
│ ├─java java源文件
│ │ └─com
│ │ └─woniuxy
│ │ └─build 包名
│ └─resources 资源: 配置文件
└─test 测试程序
└─java
└─com
└─woniuxy
└─build
pom.xml Maven工程的核心配置文件
-
为什么要遵守约定的目录结构?(约定>配置)
①Maven负责这个项目的自动化构建,以编译为例,Maven要想自动进行编译,那么它必须指定java源文件保存在哪里
②要想我们自定义的东西被框架或者工具知道- 以配置的的方式明确告诉框架
- 遵守框架内部已经存在的约定
五 Maven常用的命令
- 注意:执行与构建过程相关的Maven命令,必须进入pom.xml 所在的目录
- 常用命令
[1] mvn clean 清理
[2] mvn compile 编译主程序
[3] mvn test 执行测试
[4] mvn package 打包
[5] mvn dependency:tree 查看依赖树
[6]mvn archetype:generate -DgroupId=com.woniuxy.cq -DartifactId=myweb -Dversion=1.0 快速生成一个maven工程
六 POM(Project Object Model) 项目对象模型
pom.xml 是Maven工程的核心配置文件
七 坐标(定位)
- groupId:公司或组织域名倒序
<groupId>com.woniuxy.cq</groupId>
- artifactId:项目名
<artifactId>myweb</artifactId>
- version :版本号
<version>1.0</version>
- type:项目类型
- classifier:标识符
- scope 依赖范围
[1] compile:编译时依赖在所有阶段都可获得,默认值
[2] provided:提供的依赖范围用来编译应用程序,但无需部署
[3] runtime 运行依赖范围在编译阶段是不需要的,只有在运行时需要,比如JDBC驱动程序
[3] test 测试范围依赖,仅在编译和运行单元测试时需要 Junit
[4] system 本地依赖,不建议使用
| **依赖范围****(scope)** | **编译时依赖** | **测试时依赖** | **运行时依赖** | **是否打入包** | **例子** |
| ----------------------- | -------------- | -------------- | -------------- | -------------- | -------------------- |
| **compile** | Y | Y | Y | Y | SLF4J |
| **provided** | Y | Y | Y | N | SERVLET-API |
| **test** | N | Y | N | N | JUNIT |
| **runtime** | N | Y | Y | Y | MYSQL JDBC DRIVER |
| **system** | Y | Y | Y | Y | 有nexus后,不用system |
八 仓库
- 仓库的分类
[1] 本地仓库:当前电脑上所配置的仓库目录
[2] 私服:国内的镜像仓库
[3] 中央仓库 - 仓库中保存的内容
[1] Maven自身所需要的插件
[2] 第三方框架或工具的jar包
[3]程序员自己开发的Maven工程