Maven学习笔记
目录
文章目录
maven安装
在maven官网https://maven.apache.org/ 可以下载到maven,下载对应操作系统的安装包进行安装即可。
注:maven的运行需要基于jdk环境,请先安装jdk并配置环境变量。
maven环境变量配置
系统变量新增变量 MAVEN_HOME : D:\Java\soft\apache-maven-3.2.5
系统变量path追加 ;%MAVEN_HOME%\bin
maven目录结构
- bin:包含maven的可执行脚本
- boot:只有一个文件 plexus-classworlds-2.5.2.jar,是一个类加载器框架,Maven使用他加载自己的类库
- conf:存放settings.xml 文件
- lib:maven自身依赖的jar已经plugin相关jar包
maven项目约定目录结构
使用maven的项目必须符合此结构,否则无法正常使用maven功能
url | renark |
---|---|
src/main/java | Application/Library sources 源码 |
src/main/resources | Application/Library resources 资源文件 |
src/main/filters | Resource filter files 资源过滤文件 |
src/main/webapp | Web application sources Web应用程序 |
src/test/java | Test sources 测试源码 |
src/test/resources | Test resources 测试资源 |
src/test/filters | Test resource filter files 测试资源过滤器文件 |
src/it | Integration Tests (primarily for plugins) 集成测试(主要用于插件) |
src/assembly | Assembly descriptors 程序集描述符 |
src/site | Site 站点信息 |
LICENSE.txt | Project’s license 项目许可信息 |
NOTICE.txt | Notices and attributions required by libraries that the project depends on |
README.txt | Project’s readme 项目自述 |
maven坐标
groupId:公司或组织倒序加+项目名
artifactId:模块名
version:版本
<groupId>com.ebididng.test</groupId>
<artifactId>test-biz</artifactId>
<version>1.0.0-SNAPSHOT</version>
maven中version版本介绍
Release 稳定版本
Snapshot 开发版本
SNAPSHOT 快照版本
maven生命周期
maven拥有三套独立的生命周期,分别是clean、default、site
-
Clean Lifecycle 在进行真正的构建前进行一些清理工作
-
Default Lifecycle 编译的核心部分,编译、测试、打包、部署等
-
Site Lifecycle 生成项目报告、站点,发布站点
Clean Lifecycle
name | remark |
---|---|
pre-clean | 执行一些清理前需要完成的工作 |
clean | 清理上一次构建生成的文件 |
post-clean | 执行一些清理后需要完成的工作 |
Default Lifecycle
name | remark |
---|---|
validate | 验证项目正确和相关资源是否可用 |
initialize | 初始化构建 |
process-sources | 处理源代码 |
generate-resources | 生成所有需要包含在打包过程中的资源文件 |
process-resources | 复制并处理资源文件至目标目录,准备打包 |
compile | 编译项目的源代码 |
process-classes | 后处理编译生成的文件,例如对Java类进行字节码增强(bytecode enhancement) |
generate-test-sources | 生成所有包含在测试编译过程中的测试源码 |
process-test-sources | 处理测试源码,比如过滤一些值 |
generate-test-resources | 生成测试需要的资源文件 |
process-test-resources | 复制并处理测试资源文件至测试目标目录 |
test-compile | 编译测试源码至测试目标目录 |
test | 使用合适的单元测试框架运行测试。这些测试应该不需要代码被打包或发布 |
prepare-package | 在真正的打包之前,执行一些准备打包必要的操作。这通常会产生一个包的展开的处理过的版本(将会在Maven 2.1+中实现) |
package | 将编译好的代码打包成可分发的格式,如JAR,WAR,或者EAR |
pre-integration-test | 执行一些在集成测试运行之前需要的动作。如建立集成测试需要的环境 |
integration-test | 如果有必要的话,处理包并发布至集成测试可以运行的环境 |
post-integration-test | 执行一些在集成测试运行之后需要的动作。如清理集成测试环境 |
verify | 执行所有检查,验证包是有效的,符合质量规范 |
install | 安装包至本地仓库,以备本地的其它项目作为依赖使用 |
deploy | 复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关) |
Site Lifecycle
site生命周期的目的是建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息。该生命周期包含如下阶段:
name | remark |
---|---|
pre-site | 执行一些在生成项目站点之前需要完成的工作 |
site | 生成项目站点文档 |
post-site | 执行一些在生成项目站点之后需要完成的工作 |
post-deploy | 将生成的项目站点发布到服务器上 |
注:不管从哪个阶段开始执行,都会按顺序依次执行,例如执行package命令会从validate开始到package结束
pom.xml文件常用标签解析(Project Object Model)相对对象模型
name | remark |
---|---|
project | pom文件根元素 |
modelVersion | 指定pom的版本 |
groupId | 组织标识 |
artifactId | 模块标识 |
version | 项目版本号。一般使用三个数字,第一位表示大版本号,第二位表示分支版本号,第三位表示小版本号;snapshot快照、alpha内测、bate公测、release稳定、GA正式发布 |
package | 表示maven项目打包方式,不指定默认是jar,常用可选方式有war/zip/pom |
dependency->scope | 依赖范围,包含compile、provided、runtime、test、system、import六种范围 |
dependency->optional | 设置依赖是否可选,默认false |
dependency->exclusions | 排除依赖传递列表 |
dependencyManagement | 依赖管理,用于子模块继承 |
build | 为构建的行为提供相应的支持 |
parent | 用于继承父模块中dependencyManagement定义的依赖 |
modules | 指定多个模块进行编译,一般用于组成父模块 |
scope依赖范围
范围 | remark |
---|---|
compile | scope默认值,编译、测试、运行都有效 |
provided | 编译、测试时有效 |
runtime | |
test | 测试范围有效,例如junit |
system | 编译、测试时有效,与provided不同的是与本机系统相关联,可移植性差 |
import | 只在dependencyManagement标签中使用,表示是从其他pom中继承过来的依赖 |