maven 基础

maven常用命令

clean :清理

compile:编译

test:测试

package:打包

install:安装

maven坐标书写规范

<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency>

maven依赖范围

maven常用依赖范围有四种:

|----------|-----|-----|-----|------------------------------|
| 依赖范围 | 编译时 | 测试时 | 运行时 | 说明 |
| compile | 有效 | 有效 | 有效 | 默认的依赖范围,适用于项目主代码的依赖 |
| provided | 有效 | 有效 | 无效 | 适用于已由运行环境提供的依赖,例如servlet-api |
| runtime | 无效 | 有效 | 有效 | 适用于只在运行时需要的依赖,例如JDBC驱动 |
| test | 无效 | 有效 | 无效 | 适用于只在测试时需要的依赖,例如JUnit |

  • 编译时(compile time): 依赖项在编译代码时需要。这包括了编译项目的源代码,包括其直接依赖项。

  • 测试时(test time): 依赖项仅在运行测试代码时需要。这包括了运行测试单元时所需的依赖项。

  • 运行时(runtime): 依赖项在项目运行时需要,但在编译时不需要。这主要适用于在运行时动态加载的库。

依赖传递

概念 :假设有三个项目 A、 B、 C ,A依赖于B, B依赖于C ,A其实间接依赖于C 。 举个例子 只导入springMvc这个依赖

可以看到他依赖了spring一系列的依赖,这些依赖也被传递导入到项目中

好处

导入一个依赖,可以传递多个依赖到项目中

坏处

会造成依赖冲突

什么是依赖冲突

我导入了一个aop高版本的 它底下的core是高版本,但是 我webMvc 的core是低版本,与我想要导的包不符这就是依赖冲突

如何解决依赖冲突
1. 第一声明者优先原则:

其实就是按照从上到下的顺序 ,谁在上面,谁的传递依赖就生效

2.依赖调节原则(使用路径近者优先原则):

其实就是传递过来的依赖,不如直接声明的依赖,例如我想要spring-core 4 版本的 ,springmvc是5版本的,springmvc里面有springcore间接依赖传递,而我直接声明spring-core4版本,就会直接使用spring-core4版本

3.排除依赖(exclusions标签)(常用)

可以到加了排除标签后 springmvc里面的springaop消失了

4.版本锁定(使用最多)

第一步版本锁定,但这样并没有把依赖导入到项目中

复制代码
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>6.0.13</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

第二步 在下面声明依赖的时候不用声明版本

XML 复制代码
  <dependencies>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        
      </dependency>
    </dependencies>
相关推荐
计算机毕设定制辅导-无忧学长6 小时前
Maven 基础环境搭建与配置(一)
java·maven
计算机毕设指导610 小时前
基于Springboot学生宿舍水电信息管理系统【附源码】
java·spring boot·后端·mysql·spring·tomcat·maven
爱吃南瓜的北瓜12 小时前
Maven之jjwt依赖爆红
java·pycharm·maven
计算机毕设指导618 小时前
基于SpringBoot的城乡商城协作系统【附源码】
java·spring boot·后端·mysql·spring·tomcat·maven
雪落南城20 小时前
【Maven】maven加载不到包
java·maven
White graces1 天前
正则表达式效验邮箱格式, 手机号格式, 密码长度
前端·spring boot·spring·正则表达式·java-ee·maven·intellij-idea
drebander2 天前
Maven 构建中的安全性与合规性检查
java·maven
drebander2 天前
Maven 与 Kubernetes 部署:构建和部署到 Kubernetes 环境中
java·kubernetes·maven
丁总学Java3 天前
在IDEA的Maven中(同步所有Maven项目)和(重新加载所有Maven项目)的区别
java·maven·intellij-idea
灬Change3 天前
maven 发布本地jar包到私库
linux·maven·jar