Maven

++黑马程序员JaveWeb开发个人笔记++

++BV1m84y1w7Tb++

++p50~57++

目录

[Maven 的作用](#Maven 的作用)

方便的依赖管理

统一的项目结构

标准的项目构建流程

[创建 maven 项目(版本:IDEA 2024.3)](#创建 maven 项目(版本:IDEA 2024.3))

[test 没有 resources](#test 没有 resources)

[Maven 坐标](#Maven 坐标)

[Maven 依赖管理](#Maven 依赖管理)

依赖配置

可能的问题:依赖变黄

依赖传递

依赖具有传递性

[ultimate 版本以图标形式展现依赖关系](#ultimate 版本以图标形式展现依赖关系)

排除依赖

依赖范围

生命周期

clean

compile

test

package

[跳过 test 阶段](#跳过 test 阶段)

install


Maven 的作用

方便的依赖管理

  • 在 Java 中,要想使用哪个第三方技术,要在项目中引入对应的 jar 包,才能使用相关的 API
  • 使用 Maven 来管理依赖,只需要创建 maven 工程,不需要导入任何 jar 包
  • 在 maven 工程的pom.xml 配置文件当中,配置描述信息,告诉 maven 要使用的依赖
    • 此处是 「logback」的依赖,版本「1.2.3」
  • 配置完成之后,Maven 会自动联网下载依赖,然后在项目中直接使用

统一的项目结构

  • 不同的开发工具,构建出的 Java 项目,目录结构有差异,项目无法导入不同的开发工具中
  • Maven 提供了标准的项目结构

标准的项目构建流程

创建 maven 项目(版本:IDEA 2024.3)

test 没有 resources

  • 因为不常用,但可以自己创建
  • 能自动联想出 resource

Maven 坐标

  • Maven 中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置
  • 使用坐标来定义项目或引入项目中需要的依赖
  • Maven 坐标主要组成
    • groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima
    • artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
    • version:定义当前项目版本号

  • 通过坐标定义自己的项目
  • 通过坐标引入项目需要的依赖

Maven 依赖管理

依赖配置

可能的问题:依赖变黄

  • 原因:依赖的 jar 包在这个版本有漏洞
  • 这里我找了1.5.6版本的,就没有警告了

依赖传递

  • 只引入了「logback-classic」,其他两个依赖也自动引入了

依赖具有传递性

  • 这里 A 项目 依赖了「logback-classic」的依赖,还依赖了 B 项目
  • 所以,A 项目依赖 B 项目 ,只需要通过依赖配置的形式,来指定 B 项目的坐标
  • 依赖传递了
ultimate 版本以图标形式展现依赖关系
  • 在任意 pom 文件中右键
  • 以图标的形式展现出依赖之间的关系

排除依赖


  • 当想要排除「junit」依赖时,junit 在 C 项目中,但是,是通过B传递给A的
  • 所以在A项目中,引入B项目这个依赖的时候,进行排除依赖

依赖范围

生命周期

  • 后面的阶段依赖于前面的阶段,所以在「同一套生命周期(clean/default/site,三套)」中,运行后面的阶段进行项目的构建,前面的阶段也会运行
  • 关注五个阶段

clean

  • clean 后,target 目录没了

compile

  • 产生字节码文件

test

  • test 是运行当前项目中,所有的单元测试
  • 要引入 「junit」的依赖
  • @Test 的注解
  • 运行之后,产生日志

package

  • 打包之后的文件,在 target 目录下
跳过 test 阶段
  • 因为 package 和 test 在同一套生命周期(default) 中,所以 package 运行时,test 也会运行
  • 可以跳过

install

  • 将打包好的 jar 包安装到 maven 的本地仓库
相关推荐
郭涤生1 小时前
Chapter 3: Programming Paradigms_《clean architecture》notes
java·开发语言·c++·笔记
Hanson Huang1 小时前
23种设计模式-模板方法(Template Method)设计模式
java·设计模式·模板方法模式·行为型设计模式
woai33641 小时前
设计模式-单例模式
java·开发语言·单例模式
ljt27249606611 小时前
Compose笔记(十三)--事件总线
笔记·android jetpack
始终奔跑在路上1 小时前
Spring Initializr搭建spring boot项目
java·开发语言·spring boot·spring·软件开发
寒冰碧海1 小时前
JDK 17 + Spring Boot 3 全栈升级实战指南--从语法革新到云原生,解锁企业级开发新范式
java·spring boot·云原生
程序猿chen1 小时前
第二重·纵横篇:Kubernetes御剑术与云原生护体罡气
java·git·后端·程序人生·云原生·容器·kubernetes
青云交2 小时前
Java 大视界 -- Java 大数据在智慧港口集装箱调度与物流效率提升中的应用创新(159)
java·大数据·物联网·智慧港口·大数据分析·集装箱调度·物流效率
Aphelios3803 小时前
Java全栈面试宝典:JVM与Spring核心模块深度解析
java·开发语言·jvm·spring·面试
NEUMaple3 小时前
Spring WebFlux之ServerWebExchange
java·后端·spring