前言
记录学习JavaWeb课程中的部分知识点,包括maven依赖管理、maven高阶、Mybatis、SpringBoot自动配置等。本篇是关于maven对依赖包管理的内容。
maven依赖管理
依赖配置
在项目的 pom.xml
中配置对应的依赖(当前项目运行需要的 jar
包),包括项目组织名、依赖包名及对应版本。
<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>
groupid
和artifactId
被统称为“坐标”,是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。groupId
:groupId
分为几个字段,例如org.apache.tomcat
,前面的 org 叫做域,后面的是项目组织者起的域名,tomcat.apache.org
正是tomcat
的官网。artifactId
:artifactId
一般是项目名或者模块名。(可以浅显地理解为 依赖包的名称)
域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupId是org.apache.tomcat,它的域是org(因为tomcat是非营利项目),公司名称是apache,artigactId是tomcat。
一般来说,包名根目录 = groupId artifactId。这个是不允许和别人重复的,尤其是需要上线的项目。一般公司为了不重复都会注册一个域名(URL用的那种),这样就肯定不会重复了。
配置完成后,点击maven管理的刷新按钮,即可载入对应依赖(从本地仓库引入 或者 从远程仓库下载后引入)
依赖传递
依赖具有传递性
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
<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
:参与程序的运行、测试及打包,留空时默认为compiletest
:只在测试程序范围有效,不参与主程序和打包provided
:不参与打包runtime
:不参与主程序
生命周期
当点击
install
时,maven会自动运行compile、test、package、install
整个阶段。