前言

记录学习JavaWeb课程中的部分知识点,包括maven依赖管理、maven高阶、Mybatis、SpringBoot自动配置等。本篇是关于maven对依赖包管理的内容。

maven依赖管理

依赖配置

在项目的 pom.xml 中配置对应的依赖(当前项目运行需要的 jar 包),包括项目组织名、依赖包名及对应版本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<dependencies>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.0.3</version>
</dependency>

<dependency>
<groupld>ch.qos.logback</groupld>
<artifactld>logback-classic</artifactld>
<version>1.2.3</version>
</dependency>

<dependency>
<groupld>...</groupld>
<artifactld>...</artifactld>
<version>...</version>
</dependency>

</dependencies>
  • groupidartifactId被统称为“坐标”,是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。

  • groupIdgroupId分为几个字段,例如 org.apache.tomcat ,前面的 org 叫做域,后面的是项目组织者起的域名,tomcat.apache.org正是tomcat的官网。

tomcat依赖

  • artifactIdartifactId一般是项目名或者模块名。(可以浅显地理解为 依赖包的名称)

域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupId是org.apache.tomcat,它的域是org(因为tomcat是非营利项目),公司名称是apache,artigactId是tomcat。

一般来说,包名根目录 = groupId + artifactId。这个是不允许和别人重复的,尤其是需要上线的项目。一般公司为了不重复都会注册一个域名(URL用的那种),这样就肯定不会重复了。

配置完成后,点击maven管理的刷新按钮,即可载入对应依赖(从本地仓库引入 或者 从远程仓库下载后引入)

载入依赖注意事项

依赖传递

依赖传递

依赖具有传递性

  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  • 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

排除依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<depencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>

<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>

</dependency>
</depencies>

这里将Spring Boot测试启动器spring-boot-starter-test添加到项目的依赖项中,并在该依赖项中排除Junit Vintage引擎依赖项junit-vintage-engine,以便使用其他测试框架,其中scope的含义见依赖范围

依赖范围

scope参数含义:

  • compile:参与程序的运行、测试及打包,留空时默认为compile
  • test:只在测试程序范围有效,不参与主程序和打包
  • provided:不参与打包
  • runtime:不参与主程序

依赖作用范围

生命周期

三套生命周期

各生命周期阶段

生命周期阶段

当点击install时,maven会自动运行 compile、test、package、install 整个阶段。