- Spring Boot趣味实战课
- 刘水镜
- 755字
- 2022-08-16 19:35:29
2.2 大管家Maven
本书选择Maven作为Jar包管理及构建工具。原因很简单,它拥有领先的市场份额。图2-1展示了来自《2020 JVM生态报告》的数据。
![](https://epubservercos.yuewen.com/97C3EF/23950113201172406/epubprivate/OEBPS/Images/43216_23_1.jpg?sign=1739606052-GqjYBgxEM0ANzHmd0j0BNUJJQDPc7Idz-0-202e06218dcbc4db9e59e29c96a96e7e)
图2-1 构建工具市场份额
2.2.1 pom文件
POM(Project Object Model,项目对象模型)是我们使用Maven的核心。pom文件使用XML语言编写,定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等。
pom文件示例:
![](https://epubservercos.yuewen.com/97C3EF/23950113201172406/epubprivate/OEBPS/Images/43216_23_2.jpg?sign=1739606052-iYe0B0ghSzjYheNBKpoGUe9FX9erPQxi-0-4c9d1193840788853c70b95db9d22830)
![](https://epubservercos.yuewen.com/97C3EF/23950113201172406/epubprivate/OEBPS/Images/43216_24_1.jpg?sign=1739606052-gPxufdxFgrORHKmNMiB58vFfBO8Hfa8j-0-fff6902d145e8cd9b823a8171ac6cb41)
![](https://epubservercos.yuewen.com/97C3EF/23950113201172406/epubprivate/OEBPS/Images/43216_25_1.jpg?sign=1739606052-jayEM3cLL93odFDVtbw5WodMQNdZnrfR-0-74d8aceaca6a41730e8769887afe162e)
以上是一个pom文件示例,接下来我们一起学习几个常用的概念。
2.2.2 常用概念
坐标
坐标是Maven中非常重要的概念。我们在初中数学里就已经学习过这个概念,例如:(0,7)代表Y轴上距离原点7个单位的一个点。而我们在地理课里也学习过由经/纬度组成的坐标,例如:(东经116°23'51",北纬39°54'31")是天安门的坐标。那么Maven中的坐标是什么样子的呢?Maven中的坐标由以下3部分构成:
· groupId
· artifactId
· version
groupId代表组信息,通常是公司或者组织;artifactId是项目在组内的唯一标识;version就很简单了,代表项目的版本。我们通过一个具体示例来进一步理解:
![](https://epubservercos.yuewen.com/97C3EF/23950113201172406/epubprivate/OEBPS/Images/43216_25_2.jpg?sign=1739606052-MNSpQz18h0GhiINjgYpXwZ5h4vR6A029-0-85deff55a050668b47664bd4c2d9dd30)
上面这个坐标代表Spring的Web模块,其版本为5.2.10.RELEASE。
在Java中,可以说“万物皆对象”,而在Maven中,则可以说“万物皆坐标”。一切Jar包或pom文件都可以用一个唯一的坐标来标识。
依赖
我们可以通过坐标来声明一个Jar包或pom文件(War包不能被引用,这里不讨论),还可以通过坐标来引用其他的Jar包或pom文件。依赖管理是Maven最重要的功能之一,项目依赖的所有Jar都需要通过如下格式放到<dependencies>标签下:
![](https://epubservercos.yuewen.com/97C3EF/23950113201172406/epubprivate/OEBPS/Images/43216_26_1.jpg?sign=1739606052-nSH65HfnpRGA63N9TpPIt7LUsEOtjdS0-0-6ad75854e0eb7fe0e626821c81a6ece9)
继承
Maven中的继承和Java中的继承类似,都通过<parent>标签来标明继承关系。继承后,子工程会将父工程的相关特性应用到子工程中。例如:
![](https://epubservercos.yuewen.com/97C3EF/23950113201172406/epubprivate/OEBPS/Images/43216_26_2.jpg?sign=1739606052-0KKhuieqq1M8CWalf7OYGCBhOhlw7nmv-0-e4ed753f7ffd0c3ecf50670b4bb42f4e)
构建
构建(Build),也就是我们所说的编译打包的过程,是Maven另外一个重要的功能,用于将我们的工程打成Jar包或War包。
Maven是通过集成插件的方式来实现构建功能的,可以根据不同的构建需求选择不同的插件。在Spring Boot项目中,默认使用spring-boot-maven-plugin插件进行构建,因为Spring Boot需要将工程打包成可执行的Jar文件,所以需要使用自己定制的构建插件。例如:
![](https://epubservercos.yuewen.com/97C3EF/23950113201172406/epubprivate/OEBPS/Images/43216_26_3.jpg?sign=1739606052-USiX9H7MiGEdmpfQB9NC2YornbCiw9zG-0-ce51e3898db52474e39ff6418159569a)