【JavaWeb】maven依赖管理

2023-10-23 15:08:51 浏览数 (1)

前言

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

maven依赖管理

依赖配置

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

代码语言:javascript复制
<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的官网。
  • artifactIdartifactId一般是项目名或者模块名。(可以浅显地理解为 依赖包的名称)

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

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

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

依赖传递

依赖具有传递性

  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  • 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
代码语言:javascript复制
<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 整个阶段。

0 人点赞