Salmon的全栈知识 Salmon的全栈知识
首页
  • JavaSE
  • JavaWeb
  • Spring生态
  • JUC
  • JVM
  • Netty
  • Java各版本特性
  • 23种设计模式
  • Maven
  • Java常用框架
  • Dubbo
  • OpenFeign
  • Nacos
  • Zookeeper
  • Sentinel
  • Seata
  • SpringCloud Gateway
  • Apollo
  • Eureka
  • Go基础
  • Gin
  • SQL数据库

    • MySQL
    • Oracle
  • NoSQL数据库

    • Redis
    • MongoDB
    • ElasticSearch
  • 消息中间件

    • RabbitMQ
    • RocketMQ
    • Kafka
    • ActiveMQ
    • MQTT
    • NATS
  • 网关中间件

    • Nginx
  • Linux
  • Docker
  • Git
  • K8s
  • Solidity
  • Java
  • 计算机网络
  • 操作系统
GitHub (opens new window)
首页
  • JavaSE
  • JavaWeb
  • Spring生态
  • JUC
  • JVM
  • Netty
  • Java各版本特性
  • 23种设计模式
  • Maven
  • Java常用框架
  • Dubbo
  • OpenFeign
  • Nacos
  • Zookeeper
  • Sentinel
  • Seata
  • SpringCloud Gateway
  • Apollo
  • Eureka
  • Go基础
  • Gin
  • SQL数据库

    • MySQL
    • Oracle
  • NoSQL数据库

    • Redis
    • MongoDB
    • ElasticSearch
  • 消息中间件

    • RabbitMQ
    • RocketMQ
    • Kafka
    • ActiveMQ
    • MQTT
    • NATS
  • 网关中间件

    • Nginx
  • Linux
  • Docker
  • Git
  • K8s
  • Solidity
  • Java
  • 计算机网络
  • 操作系统
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 基础

    • Maven简介
    • 下载与安装
    • Maven基础概念
    • 第一个Maven项目(手工制作)
    • 第一个Maven项目(IDEA生成)
    • 依赖管理
      • 1. 依赖配置
      • 2. 依赖传递
      • 3. 可选依赖
      • 4. 排除依赖
      • 5. 依赖范围
    • 生命周期与插件
  • 高级

    • 分模块开发与设计
    • 聚合
    • 继承
    • 属性
    • 版本管理
    • 资源配置
    • 多环境开发配置
    • 跳过测试
    • 私服
  • 《Maven》笔记
  • 基础
Salmon
2024-02-23
目录

依赖管理

# 1. 依赖配置

  • 依赖指当前项目运行所需的jar,一个项目可以设置多个依赖

  • 格式:

    <!--设置当前项目所依赖的所有jar-->
    <dependencies>
    	<!--设置具体的依赖-->
    	<dependency>
    		<!--依赖所属群组id-->
    		<groupId>junit</groupId>
    		<!--依赖所属项目id-->
    		<artifactId>iunit</artifactId>
    		<!--依赖版本号-->
    		<version>4.12</version>
    	</dependency>
    <dependencies>
    

# 2. 依赖传递

依赖具有传递性

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

image-20240223223232539

依赖传递冲突问题

  • 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
  • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

image-20240223223315153

# 3. 可选依赖

可选依赖指对外隐藏当前所依赖的资源一一不透明

<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
	<optional>true</optional>
</dependency>

# 4. 排除依赖

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本一一不需要

<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
	<exclusions>
		<exclusion>
			<groupId>org.hamcrest</groupId>
			<artifactId>hamcrest-core</artifactId>
		</exclusion>
	</exclusions>
</dependency>

# 5. 依赖范围

  • 依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围

  • 作用范围

    • 主程序范围有效 (main文件夹范围内)
    • 测试程序范围有效 (test文件夹范围内)
    • 是否参与打包 (package指令范围内)

  • 带有依赖范围的资源在进行传递时,作用范围将受到影响

    image-20240223223551292

上次更新: 2025/07/23, 01:37:33
第一个Maven项目(IDEA生成)
生命周期与插件

← 第一个Maven项目(IDEA生成) 生命周期与插件→

Theme by Vdoing | Copyright © 2022-2025 Salmon's Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式