文档章节

Maven基础知识

PereTang
 PereTang
发布于 2017/05/09 21:54
字数 1577
阅读 11
收藏 0

本人博客文章网址:https://www.peretang.com/basic-knowledge-of-maven/

Maven简介

  Maven , 用于Java项目的构建 , 依赖管理 , 项目信息管理的项目管理工具.

  是Apache组织旗下的开源项目.

  Maven核心功能是一个具有跨平台特性的构建工具 , 帮助我们自动化构建 , 并提供一个完整的优化的构建生命周期模型 , 和构建任务所需的基础组件/插件.

  Maven还是一个依赖管理工具和项目信息管理工具 , 方便开发人员更好的管理依赖与避免项目信息混乱等问题.

  Maven还提供了一套标准的约定规则 , 减轻不同项目的差异性.

 

Maven特性

Maven标准约定规则

  Maven是一个约定优于配置的工具 , 只要遵守Maven的约定 , 那么只需要少量的配置 ,Maven就能帮助你完成你所需的大部分工作

 

Maven构建

  Maven统一了项目构建时的阶段 , 提供了一个标准化的构建阶段模型:

  1. validate (验证) : 验证项目的所有必要信息的正确性

  2. initialize (初始化) : 初始化构建状态 , 例如设置属性或创建目录

  3. generate-sources,process-sources (处理源文件) : 处理项目源文件

  4. generate-resources,process-resources (处理资源文件) : 对资源文件进行处理 , 并将其复制到目标目录 , 等待打包

  5. compile,process-classes (主代码编译) : 编译项目的主代码至目标文件夹

  6. generate-test-sources,process-test-sources (处理测试源文件) : 对项目测试源文件进行处理

  7. generate-test-resources,process-test-resources (处理测试资源文件) : 对项目测试资源文件进行处理 , 并将其复制到目标目录

  8. test-compile,process-test-classes (测试代码编译) : 编译项目的测试源代码至目标文件夹

  9. test (测试) : 使用项目定义的单元测试框架进行测试

  10. prepare-package,package (打包) : 将编译后的主代码打包成所需的格式"软件包"

  11. pre-integration-test,integration-test,post-integration-test (集成测试) : 如需要 , 会将打包好的"软件包"部署到可以运行集成测试的环境中进行集成测试

  12. verify (校验) : 运行定义的检查步骤以验证"软件包"是否有效 或 是否符合质量标准

  13. install (安装) : 将"软件包"安装到本地仓库[1]中 , 以作为本地其他项目的依赖

  14. deploy (部署) : 将"软件包"发布到远程仓库[2]中 , 以供其他人使用与项目共享

Maven依赖管理与项目信息管理

  关于依赖管理方面 , 在目前这个年代 , 几乎每个Java应用都会有第三方的开源库依赖 , 若还是使用手工的方式管理会严重影响开发人员的效率 , 并会因为依赖增多的问题的增加更加复杂 , 所幸Maven提供了优秀的解决方案 , 通过引入"GroupId","ArtifactId","Version","type"等元素为Java的依赖问题提供了一个坐标系统 , 从而帮助开发人员更好的管理项目.

  关于项目信息管理方面 , 当开发人员使用第三方开源库时 , 总会有需要查看文档 , 源代码等需求 , 在使用Maven之前 , 开发人员总需要去各大搜索引擎去查找这些信息 , 但当引入Maven后 , 这些关于项目的信息 , 可以统一在POM文件[3]中声明 , 方便其他人的查找 , 与项目信息的统一管理.

 

POM文件

  POM文件是Maven的一大核心内容 , 其全称为"Project Object Model"即项目对象模型.
  其用于定义项目的基本信息 , 指定项目如何构建 , 声明项目依赖 ; POM文件提现了Maven的一大优点 , 即能让项目对象模型最大程度与项目代码等相独立 , 即把两者的关系进行了解耦.

 

Maven坐标系统

  Maven构件 : 指的是平时项目打包完成后的的一些jar , war等文件.

  Maven坐标为各种构件引入了秩序 , 任何一个构件都必须明确定义自己的唯一坐标 ; 而一组Maven坐标就是通过以下一组元素定义的 :

  groupId : 定义当前Maven项目隶属的实际项目

  artifactId : 定义实际项目中的一个Maven模块/项目 , 推荐使用groupId作为artifactId的前缀

  version : 定义Maven模块/项目所处的版本 , Maven定义了一套完整的版本规范

  packaging : 定义Maven模块/项目的打包方式

  classifier : 帮助定义一些与主构件对应的附属构件

  Maven仓库就是基于Maven的坐标系统

 

Maven仓库

  得益于Maven的坐标机制 , 任何Maven项目使用的任何一个"构件"的方式都是相同的 ; 在此基础上 , Maven可以在某个位置统一储存所有Maven项目共享的"构件" , 这就是仓库 ; 因为仓库 , 所以Maven项目不再需要各自储存依赖的"构件" , 转而只需声明这些依赖的坐标 , 在需要的时候 , Maven会自动根据坐标找到仓库中的"构件" , 并使用它们.

  仓库的分类有两种 , 本地仓库与远程仓库 ; 当Maven根据坐标寻找"构件"的时候 , Maven会先查看本地仓库 , 如果本地仓库存在此构件 , 则直接使用 ; 如果本地仓库不存在此"构件" , 或需要查看是否有更新的版本 , Maven就会去远程仓库查找 , 当发现所需的"构件"后 , 就会下载到本地仓库后再使用 ; 如果最终本地仓库与远程仓库都无法找到所需要的"构件"时 , Maven就会报错.

 

 

参考

  Apache Maven

  Maven实战

© 著作权归作者所有

PereTang
粉丝 1
博文 25
码字总数 17854
作品 0
广州
程序员
私信 提问
如果你想开发一个应用(1-1)

TIM图片20171025180500.png 前言 这个系列只是想对自己的一个总结,并且逼迫自己迭代熟悉从低到高的各个知识点,如有纰漏,欢迎提出。 这个系列会以一根备忘录的应用举例,来完成一个创建web...

双鱼座的牛
2017/11/01
0
0
Maven基础知识

本人博客文章网址:https://www.peretang.com/basic-knowledge-of-maven/ Maven简介 Maven , 用于Java项目的构建 , 依赖管理 , 项目信息管理的项目管理工具. 是Apache组织旗下的开源项目. Mav...

PereTang
2017/05/09
0
0
Maven教程:tutorialspoint-maven

来自turorialspoint的Maven教程(英文),官网:http://www.tutorialspoint.com/maven/index.htm 这个教程在国内已经被翻译成中文,官网:https://www.gitbook.com/book/ayayui/tutorialspo...

easonjim
2017/05/07
0
0
SpringBoot 入门实例

SpringBoot 是由 pivotal 提供的 Java 开发框架,伴随着 spring 4.0 版本一起发布,旨在简化 Spring 项目的初始化及开发过程,框架本身为开发过程提供了大量的默认配置,当然我们也可以通过简...

Aotian
2018/05/29
0
0
知识总结:Java的21个技术点

关于Java的编程知识,有人会问哪几个是重要的知识点,不知道大家是否知道呢?给大家分享一下! 1、JVM相关(包括了各个版本的特性) 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很...

牛客网
2017/12/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里P7架构师:这些技术点没搞懂,我劝你不要跳槽!

阿里P7架构师架构师:这些技术点没搞懂,我劝你不要跳槽! 哪些技术点呢? 废话不多说,技术点全在下面这6张图里面了! 1.怎么看源码? 2.分布式 3.微服务 4.性能优化 5.工程化 粉丝福利:一...

别打我会飞
22分钟前
2
0
易错题

architect刘源源
26分钟前
1
0
使用Json4s 将带有Timestamp的对象转json时 变为所在时区

在有Timestamp属性的对象转json时 最后出来的时间会减小8小时,是因为变成了0时区,需要将隐式转换中添加设置本地时区 import org.json4s.{DefaultFormats, Formats}import org.json4s.jac...

可达鸭Go
28分钟前
1
0
工作六年java程序员的工作感悟,带你走出迷茫

前言 很多年前,刚刚从大学毕业的时候,很多公司来校招。其中最烂俗的一个面试问题是:“你希望你之后三到五年的发展是什么?”。我当时的标准回答是(原话):“成为在某一方面能够独当一面...

java知识分子
33分钟前
3
0
jenkins邮箱发送失败以及解决方案

jenkins邮箱设置报错以及解决方案 Jenkins邮箱设置 我用了 Email Extended Plugin这个插件,这个插件会有更加丰富的邮件内容,建议添加。 1.安装 Email Extended Plugin 2.系统管理-系统设置...

shzwork
42分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部