Maven学习交流(入门篇)v1.0
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
命周期的每个阶段时此phase的前面的所有阶段都会被执行。
• clean生命周期
pre-clean 执行一些需要在clean之前完成的工作 clean 移除所有上一次构建生成的文件 post-clean 执行一些需要在clean之后立刻完成的工作
依赖管 理工具
Clean
Maven
Default
信息 管理
http://maven.apache.org/plugins/index.html
• Maven插件绑定
依赖管 理工具
信息 管理 工具
生命周期的阶段与插件的目标互相绑定,以完成某个具体的构件任务。
Maven
版本管 理工具
标准化 目
流程IT 内部资料 不可外传
4. Maven生命周期及插件
4.3 Maven插件
工S具ite
版本管 理工具
标准化 目
流程IT 内部资料 不可外传
4. Maven生命周期及插件
4.2 Maven三套生命周期
• default生命周期
构建
Default生命周期定义了真正构件时所需要执行的所有步骤,它是Maven生命周期的核心工。具
validate generate-sources process-sources generate-resources process-resources 复制并处理资源文件,至目标目录,准备打包。 compile 编译项目的源代码。 process-classes generate-test-sources process-test-sources generate-test-resources process-test-resources 复制并处理资源文件,至目标测试目录。 test-compile 编译测试源代码。 process-test-classes test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。 prepare-package package 接受编译好的代码,打包成可发布的格式,如 JAR 。 pre-integration-test integration-test post-integration-test verify install 将包安装至本地仓库,以让其它项目依赖。 deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
Maven引入目标前缀的概念,dependency是maven-dependency-plugin的前缀。
b. 跟依赖构件一样,插件构件同样基于坐标存储在maven仓库中。依理赖工管具 <pluginRespositories> <pluginRepository>
信息 管理 工具
Maven
c. 解析插件版本:~\.m2\repository\org\apache\maven\plugins\maven-compiler-plugin\maven-metadata-nexus.xml
• Maven依赖配置项
groupId、artifactId、version:依赖的基本坐标。 type: 依赖的类型,对应于项目坐标的packaging,默认jar。 scope: 依赖的范围。
依赖范围 (Scope)
对于编译
对于测试
对于运行时
Classpath有效 Classpath有效 Classpath 有效
groupId/artifactId/maven-metadata.xml, 将其与本地仓库的元数据合并, 得到最新的版本,加载到本地仓库;
流程IT 内部资料 不可外传
3. Maven仓库
3.3 Maven镜像
• 镜像配置
路径: settings.xml <mirrors> <mirror>
如图:X就认为是Y的一个镜像。 任何需要的构件都可以从私服获得,私服就是所有仓库的镜像。
• Maven私服
部署第三方构件,包括组织内部生成的构件和一些无法从外部仓库直接获取的构件;
流程IT 内部资料 不可外传
3. Maven仓库
3.2 部署到远程仓库
• 部署地址
路径: pom.xml <distributionManagement>
• 部署版本
固定版本:e.g. 1.0 / 1.1 快照版本: 1.0-SNAPSHOT maven-metadata-local.xml 时间戳
runtime
Runtime
-
-
runtime
流程IT 内部资料 不可外传
3. Maven仓库
3.1 Maven仓库的配置
• Maven仓库的布局
路径: groupId/artifactId/version/artifactId-version/packaging
• Maven仓库的分类
本地仓库:~/.m2/settings.xml 远程仓库: Maven必须有一个可用的远程仓库
• Maven仓库解析依赖的机制
a. 当依赖范围是system, Maven从本地文件系统解析构件; b. 根据坐标计算仓库路径,尝试从本地加载构件; c. 如果依赖的版本是发布版本,遍历所有的远程仓库,下载构件; d. 如果依赖的版本是RELEASE/LATEST, 则基于更新策略读取所有远程仓库的元数据
集成 测试
验证
版本管 理工具
信息 管理 工具
部署
标准化 目
流程IT 内部资料 不可外传
4. Maven生命周期及插件
4.2 Maven三套生命周期
• Maven三套生命周期
构建
Maven的有三套生命周期:clean、default、site。每个生命周期包含不同的阶段(ph工as具e)、阶段是有序的、执行生
依赖管 理工具
Clean
版本管 理工具
Maven
Default
信息 管理
工S具ite
标准化 目
流程IT 内部资料 不可外传
4. Maven生命周期及插件
4.2 Maven三套生命周期
• site生命周期
site生命周期的目的是建立和发布项目站点。
pre-site site:生成项目站点文档 post-site site-deploy:将生成的项目站点发布到服务器上
信息 管理 工具
Maven
版本管 理工具
标准化 项目
流程IT 内部资料 不可外传
1. Maven简介及使用入门
1.2 Maven开发环境搭建
• Maven安装和目录结构介绍
settings.xml
• M2eclipse
开发环境: a. 设置JDK; b. Window--> Preference --> Java --> Installed JREs --> Edit c. 设置Local Maven;
scope: 依赖的范围,不仅控制与classpath的关系,还影像传递性依赖。
传递依赖范围 (Scope)
compile
Compile Compile
Test -
Provided -
runtime Runtime
test
Test
-
-
Leabharlann Baidu
Test
provided
Provided
-
provided
Provided
流程IT 内部资料 不可外传
4. Maven生命周期及插件
4.1 Maven生命周期
• 何为Maven生命周期
Maven对构建过程(编译、运行单元测试、打包、部署)的标准
构建
化,抽象为构建生命周期模型;
工具
生命周期本身不做任何工作;实际的任务由插件完成;
清理
初始 化
编译
测试
依赖管 理工具
打包
Maven
</plugin>
<plugins>
</build> c. POM中插件任务配置
版本管 理工具
构建 工具
Maven
信息 管理 工具
标准化 目
流程IT 内部资料 不可外传
4. Maven生命周期及插件
4.3 Maven插件
• 插件解析机制
构建
a. 命令行mvn dependency:tree
工具
实际解析命令:mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:tree
version:版本号,最后一个定位的内容。 e.g. <version>0.0.1-SNAPSHOT</version>
packaging: Maven项目的打包方式。 默认是jar, parent项目和aggregate项目选择pom
流程IT 内部资料 不可外传
2. Maven坐标体系及依赖
2.2 Maven依赖的配置
流程IT 内部资料 不可外传
2. Maven坐标体系及依赖
2.1 Maven坐标体系
• Maven坐标样例
groupId:唯一定义一个组织或者项目。 e.g. <groupId>com.midea.jr.maven.sharing</groupId>
artifactId:唯一标识一个项目或者模块。 e.g. <artifactId>sharing.hello-world</artifactId>
• Maven生命周期的执行过程
构建 工具
依赖管 理工具
Default
Clean Maven
信S息ite
管理 工具
$mvn clean 执行pre-clean clean
$mvn clean install 执行上面提到的clean、执行default生命周期从开始到install所有生命周期阶段。
<artifactId>maven-compiler-plugin</artifactId>
Maven学习交流
入门篇
流程IT 内部资料 不可外传
1. Maven简介及使用入门 2. Maven坐标及依赖 3. Maven仓库 4. Maven生命周期及插件 目录文案
流程IT 内部资料 不可外传
1. Maven简介及使用入门
1.1 为什么使用Maven
• Maven是优秀的构建工具
Maven对构建过程(编译、运行单元测试、打包、部署)的标准 化,抽象为构建生命周期模型;
例子
compile
Y
Y
Y
Spring-core
test
-
Y
-
Junit
provided
Y
Y
-
Servlet-api
runtime
-
Y
system
Y
Y
Y
JDBC
本地的,
-
Maven仓库之
外的类库文件
流程IT 内部资料 不可外传
2. Maven坐标体系及依赖
2.2 Maven依赖的配置
• Maven依赖传递
• Maven是优秀的依赖管理工具
Maven通过一个坐标系统准确地定位每一个构件(artifact),
groupId + artifactId + version
• 标准化项目管理工具
Convention Over Configuration 标准化项目管理过程,大大减少学习成本
构建 工具
依赖管 理工具
版本管
标准化
理工具
目
流程IT 内部资料 不可外传
4. Maven生命周期及插件
4.3 Maven插件
• 插件目标(plugin goal)
构建
Maven的核心仅仅定义了抽象的生命周期,具体的任务是交由插件完成的,插件以独立工的具构架形式存在。
任务的背后有很多可以复用的代码,因此,这些功能就聚集在一个插件里,每个功能就是一个插件目标。
b. POM中全局配置:
<build>
<plugins> <plugin>
依赖管 理工具
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
-Dmaven.multiModuleProjectDirectory=M2_HOME
流程IT 内部资料 不可外传
1. Maven简介及使用入门
1.3 Maven使用入门
• POM文件简介
pom.xml
• Maven Hello-World项目
通过m2eclipse构建Hello-World项目; Maven项目目录结构简介;
• Clean生命周期内置绑定
• default生命周期内置绑定
• site生命周期内置绑定
构建 工具
依赖管 理工具
信息 管理 工具
Maven
版本管 理工具
标准化 目
流程IT 内部资料 不可外传
4. Maven生命周期及插件
4.3 Maven插件
• 插件配置
a. 命令行插件配置:mvn clean install -Dmaven.test.skip=true
d. 解析插件前缀:~\.m2\repository\org\apache\maven\plugins\maven-metadata-nexus.xml
<plugin> <name>Maven Compiler Plugin</name> <prefix>compiler</prefix>
版本管 理工具