maven介绍及环境搭建
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
常用命令
- mvn -v 查看maven版本
- mvn compile 编译
- mvn test 测试
- mvn package 打包
- mvn clean 删除target
- mvn install 安装jar到本地仓库中
maven生命周期及插件
完整的项目构建过程
清理、编译、测试、打包、集成测试、验证、部署
生命周期
名称 | 功能 |
---|---|
clean | 清理项目 |
default | 构建项目 |
site | 生成项目站点 |
- 简述
三套生命周期相互独立,每个生命周期包含不同的阶段。这些阶段会顺序执行,后面的阶段依赖于前面的阶段。
clean清理项目阶段
- pre-clean 执行清理前的工作
- clean清理上一次构建生成的所有文件
- post-clean执行清理后的文件
default构建项目(最核心)
- compile
- test
- package
- insta
site 生成项目站点
- pre-site 在生成项目站点前要完成的工作
- site 生成项目站点文档
- post-site 在生成项目站点后要完成的工作
- site-deploy 发布生成的站点到服务器上
pom.xml常用元素
- project 根元素 ,进行约束设置
- modelVersion 版本号
- groupId 主项目名
- artifactId 标识模块名
version 当前项目版本号
格式通常类似0.0.0,第一个0表示大版本号,第二个0表示分支版本号,第三个0表示小版本号。
标识 含义 snapshot 快照 alpha 内部测试 beta 公测 release 稳定 GA 正式公布 packaging 表示项目的打包方式,默认为jar
- name 项目描述名
- url 项目地址
- description 项目描述
- developers 开发人员列表
- licenses 许可证信息
- organization 组织信息
- dependencies 依赖列表
- dependency 依赖项
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<!-- 依赖项作用域 -->
<scope>test</scope>
<!-- 设置依赖是否可选 -->
<optional></optional>
<!-- 排除依赖传递列表 -->
<exclusions></exclusions>
</dependency>
- build 为构建行为提供相应的支持
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<!-- 将source绑定到package阶段执行 -->
<executions>
<execution>
<phase>
package
</phase>
<goals>
<goal>
jar-no-fork
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
依赖范围
- compile 默认级别,编译测试及运行都有效
- provided 在编译和测试时有效
- runtime 在测试和运行时有效
- test 只在测试时有效
- system 与provided差不多,但与本机系统相关联,可移植性差
- import 导入的依赖范围,只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置
依赖传递
依赖具有传递性,默认情况下。若C依赖于B,B依赖于A,则C的依赖列表里不仅有B还会有A。可以通过exclusions消除传递依赖。
依赖冲突
原则1:短路优先
版本冲突时,优先解析路径短的版本
原则2:若路径长度相同,谁先声明则先解析谁