共计 1271 个字符,预计需要花费 4 分钟才能阅读完成。
一文带你彻底搞懂 Maven
在刚学 maven 时,我就把 maven 当作一个引入 jar 包的工具而已,以前是自己下载 jar 包,现在是只用在 pom 文件中填写相应的坐标就可以了。除此之外当我们需要使用的 jar 包依赖于另一个 jar 包时,maven 会自动帮我们引入适用的版本。这就避免了我们自己下 jar 包,然后版本不匹配的问题。除此之外,我还模糊的知道一些 maven 的聚合和继承,之后在接手项目的时候还是吃了的大亏。于是打算重新学习一下 maven。
maven 是什么
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information
Maven 的定位
多数博客或者视频都将 maven 定义为自动化构建工具。那什么是自动化构建工具呢?我们首先来解释构建:
- 一个 BS 项目最终运行的并不是动态 web 工程本身,而是这个动态 web 工程“编译的结果”
- 将 java 源文件变成字节码,交给 JVM 去执行
- 编译
- 部署
构建各个过程的步骤:
- 清理: 将以前编译得到的旧字节码删除掉
- 编译: 将 java 源代码变成字节码
- 测试: 执行 test 文件夹中的测试程序
- 报告: 显示测试程序执行的结果
- 打包: 动态 Web 工程打成 war 包,Java 工程打成 jar 包
- 安装: Maven 的特定概念 — 将打包得到的文件复制到 ” 仓库 ” 中指定的位置
- 部署: 将动态 Web 工程生成的 war 包复制到 Servlet 容器中指定的目录下, 使其可以运行
- 自动化构建,其实上述步骤,在 elipse 和 IDEA 中也可以完成,只不过没那么标准。既然 IDE 已经可以完成这些工作了,那么还要 maven 干什么呢?
日常开发中,以下几个步骤是我们经常走的:
- 编译
- 打包
- 部署
测试
这几个步骤是程式化的,没有太大的变数或者说根本就没有变数。程序员们很希望从这些重复的工作中脱身出来,将这些重复的工作交给工具去做。此时 Maven 的意义就体现出来了,它可以自动的从构建过程中的起点一直执行到终点。
maven 的核心概念
**
POM
POM: a project object model. 项目对象模型。对这个概念老实说,我并没有很深的理解,或者说我并不理解项目对象模型的意思。
有资料说项目对象模型就是将 Java 工程的相关信息封装为对象便于操作和管理的模型。
这个解释的稍微让人那么容易那么一点。学习 Maven 就是学习 pom.xml 文件中的配置。
坐标
坐标这个概念我觉得和依赖结合起来解释会更好,在没有 Maven 之前,我们引入 jar 包的方式就是先下载,
然后在复制在类文件路径下,你的项目需要的 jar 包,在 Maven 看来就是你的项目依赖于某些 jar 包,pom.xml 文件中填写对应 jar 包的位置,
就可以引入对应的 jar 包。使用如下三个向量在 Maven 的仓库中唯一的确定一个 Maven 工程
**