1. 什么是POM

POM(Project Object Model)项目对象模型,它是Maven的核心组件。它是Maven中的基本工作单元。它是一个xml文件,以pom.xml驻留在项目的根目录中。POM不仅包含有关项目的信息及Maven用于构建项目的各种配置的详细信息,还包含目标和插件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<!--添加父工程的引用-->
<parent>
<groupId>com.bjpowernode.xiaomi</groupId>
<artifactId>xiaomi-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>

<!--本项目的身份证号gav-->
<groupId>com.bjpowernode</groupId>
<artifactId>springmvc_006_ssm</artifactId>
<version>1.0.0</version>
<!--打包方式-->
<packaging>war</packaging>

<!--集中定义依赖版本号,使用属性-->
<properties>
<!--mysql驱动的依赖-->
<mysql.version>5.1.32</mysql.version>
</properties>

<!--添加依赖-->
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
</dependencies>

<build>

<!--聚合工程-->
<modules>
<module>xiaomi-manager-pojo</module>
<module>xiaomi-manager-mapper</module>
<module>xiaomi-manager-service</module>
<module>xiaomi-manager-web</module>
</modules>

<!--插件配置-->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source>
<target>17</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>

<!--指定配置文件识别路径-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>

2. 什么是约定的目录结构

会有预先约定好的目录结构,必须要遵循的规范,所有的Maven项目都依照这个规范。主要的目的是将项目的源码文件,测试代码,资源文件完全分开,便于项目管理和扩展。

img

3. 什么是坐标GAV

也称为gav定位。使用三个标签来唯一定位jar资源。项目的唯一的名称,创建项目时定义gav名称,引用项目时使用gav名称。相当于项目的身份证号。

表现在仓库,gav是一级一级的目录。

  1. groupId: 组织名称,一般是公司域名的倒写 com.north
  2. artifactId: 项目名称 springmvc_006_ssm
  3. version: 版本编号 1.0-SNAPSHOT(开发时的临时版本号) 5.2.5.RELEASE(发布版本)
1
2
3
4
5
6
7
8
<groupId>com.north</groupId>
<artifactId>springmvc_006_ssm</artifactId>
<version>1.0.0</version>
<dependency>
<groupId>com.north</groupId>
<artifactId>springmvc_006_ssm</artifactId>
<version>1.0.0</version>
</dependency>

4. 什么是仓库

4.1. 本地仓库

本地仓库,存在于当前电脑上,默认存放在 .m2\repository中,为本机上所有的Maven工程服务。你也可以通过Maven的配置文件Maven_home/conf/settings.xml中修改本地仓库所在的目录 是用户的主目录,windows系统中是 c:/user/登录系统的用户名

秘密: gav就是仓库中一级一级的目录名称

4.2. 远程仓库

远程仓库:通过局域网或互联网访问的仓库地址。

远程仓库,分为为全世界范围内的开发人员提供服务的中央仓库、为全世界范围内某些特定的用户提供服务的中央仓库镜像、为本公司提供服务自己架设的私服。

中央仓库是maven默认的远程仓库,其地址是:Just a moment…,中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载得到。

私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。我们还可以把一些无法从外部仓库下载到的构件上传到私服上

img

5. 什么是依赖

添加jar包.

所有的资源是以gav进行定义的,也是通过gav来添加引用.

大标签中,通过子标签,通过gav进行引用.

1
2
3
4
5
6
7
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.11</version>
</dependency>
</dependencies>

6. 什么是生命周期

它对应项目构建的过程,底层是Maven命令的调用(插件).

生命周期对应的Maven命令(了解):

  1. mvn clean 清理(会删除原来编译和测试的目录,即 target 目录,但是已经 install 到仓库里的包不会删除)
  2. mvn compile 编译主程序(会在当前目录下生成一个 target,里边存放编译主程序之后生成的字节码文件)
  3. mvn test-compile 编译测试程序(会在当前目录下生成一个 target,里边存放编译测试程序之后生成的字节码文件)
  4. mvn test 测试(会生成一个目录surefire-reports,保存测试结果)
  5. mvn package 打包主程序(会编译、编译测试、测试、并且按照 pom.xml 配置把主程序打包生成 jar 包或者 war 包)
  6. mvn install 安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中)
  7. mvn deploy 部署主程序(部署到私服仓库中)。

7. 什么是插件

Maven本质上就是一个插件的框架 , 插件就是集成化的功能.

通过大标签,再通过子标签进行极简化的添加.

常见的插件:comcat插件,编译插件,MyBatis的逆向工程插件.

1
2
3
4
5
6
7
8
9
10
11
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source>
<target>17</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>