文章目录
前言
什么是maven?在百度百科上是这样是这样解释的:Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。接下来我们将介绍这一工具.
Maven基本信息
首先我们要明确一个概念,什么是构建?构建是将源代码编译、运行单元测试,生成软件文档,打包和部署等工作,这些加起来就是构建。Maven就是在Java编程语言领域的一个非常非常好用的一个构建工具。
Maven另一个主要的功能就是对依赖进行管理,依赖管理的好处就在于我们可以不用关心,如何去下载一个可执行的jar包,比如说spring boot的jar包,或者是Sl4j的jar包,我们只需要在配置文件中配置,Maven就可以自动帮我们下载,这样的好处是可以省去大量的时间和精力去从互联网上一个个寻找并下载jar包。这一切都依赖于Maven的配置文件,也就是pom.xml
这个文件,我们今天也是以这个文件为线索来介绍Maven。
在学习pom.xml
之前,我们需要首先去理解Maven的架构是什么样子的。Maven总体上分为本地仓库和远程仓库,远程仓库里面收集了市面上所有的常见的依赖,并进行统一管理。在开发中我们实际上用的依赖也是从这个*仓库下载的,而本地仓库则是储存你在*仓库下载过的依赖。所以整个Maven架构大概就是下面这样的。
接下来我们就进入正题。一起来看看pom.xml
是什么样子的吧。
首先来看看文件的开头:
第一行是XML头,这里指定了XML的版本以及编码。第二行的project主要是用于帮助IDE来解析pom文件的,这并不是必须的。
我们继续看下一部分。
接下来是pom的版本定义,在我们现在使用的Maven3中,Pom的版本只能是4.0。如下所示:
<!-- pom的版本-->
<modelVersion>4.0.0</modelVersion>
到此为止,一个Pom的最最基本元素都已经具备了,接下来的配置我将其分为四大块:本项目信息配置、本项目依赖配置、编译打包配置和其他不常用配置。
接下来就一个个深入分析!
本项目信息配置
这个模块主要定义了本项目的信息,在了解这个模块之前,我们需要明确一个概念:**所有的项目都可以上传到Maven*仓库,为了方便区分不同的项目需要有一个全球唯一的标识!**这个标识我们称之为:依赖坐标。
依赖坐标的样子就是下面这样的:
<!-- 项目坐标-->
<groupId>org.example.demo</groupId>
<!-- 项目模块名-->
<artifactId>MavenDemo</artifactId>
<!-- 模块版本号-->
<version>1.0-SNAPSHOT</version>
<!-- 打包方式-->
<packaging>jar</packaging>
- groupId:定义当前项目属于哪个项目,这里一般使用组织的域名的反向拼写加上项目的实际名称,比如说上面的坐标就是属于
example.org
这个组织(因为域名全球唯一,所以这里也是全球唯一的),后面的demo
代表这个项目是一个叫demo的项目。这样虽然做到了全球唯一,但是还有一个问题就是如果一个项目有多个模块也无法区分。所以引入了artifactId
- artifactId:定义了项目中的一个模块名,例如上面所写的就代表着
org.example.demo
这个项目下的MavenDemo
模块。再举一个例子就是Spring,在org.springframework.boot
这个项目下有非常多的模块,例如redis
、web
等等。 - version:定义了一个模块的版本。这里值得注意的是,在Maven项目中有两种版本号,一种是
SNAPSHOT
(快照),一种是RELEASE
(稳定)。快找版本需要指定版本的后缀为SNAPSHOT
,其他后缀的都是稳定版本。- 快照版和稳定版的不同点:稳定版在*仓库有一个唯一的版本,也就是说一旦上传了稳定版本就再也改不了了!而快找版本可以在仓库有多份,在引入快照版本的时,每次执行编译的时候Maven都会去仓库查找最新的快照版本下载下来,并引用这个最新的版本。所以快照版本更多的是用在协同开发时,方便大家调试和测试等工作,而我们平时一定要使用稳定的版本。
- packaging:打包方式,这里就很简单了,规定了打包方式,打的是jar包还是war包。
从上文可以看出,我们通过上面的四个坐标可以确定一个组织中某个项目的某个模块的某个版本。也就是唯一的一份依赖。这也是后面所说的依赖管理的基础。
以上就是本篇文章的全部内容,如果你觉得文章写得不错,求点赞,求转发。欢迎关注公众号(高压锅码农777)点击右下角联系作者,一起交流学习。
我是锅哥,祝你幸福,我们下期见。