Maven

目录

一、创建一个Maven项目

二、Maven在项目开发中的核心功能

1、项目构建

2、管理依赖

依赖传递

依赖排除

依赖调节、可选依赖

步骤

原理

Maven设置国内源

修改Maven目录的地址


Maven是一个项目管理工具,主要用于构建项目(清理、编译、测试、运行、打包和安装等过程)

一、创建一个Maven项目

IDEA本身已经集成了Maven,所以可以直接使用,无需安装

目录结构:

二、Maven在项目开发中的核心功能

1、项目构建

Maven提供了标准的、跨平台(Linux、Windows、MacOS等)的自动化项目构建方式,包括清理、编译、测试、运行、打包和安装、生成文档等过程

在Java开发中,打包通常指的是将所有的Java源文件、配置文件和资源文件压缩到一个文件中,形成一个可执行的单位。通过定义pom.xml文件中的构建配置<build>,可以轻松执行各种构建任务

pom.xml是maven的配置文件,用以描述项目的各种信息

打包生成的文件通常是Jar包或War包,这些包包含了运行应用程序所需的类和资源。

打好的Jar包就可以引入到其他项目中,也可以直接使用这些jar包中的类和属性。另外也可以打成可执行jar包,这样的包就可以通过java-jar命令来执行

war包也可以理解为web项目,通常用于网站

2、管理依赖

Maven通过pom.xml文件定义项目的依赖关系,自动下载和管理项目所需要的依赖库,减少手动管理依赖的错误和复杂性

依赖传递

早期不使用maven时向项目中添加依赖的jar包时,不仅需要知道此项目依赖哪些jar包,还要知道这些jar包都依赖哪些jar包,以及这些依赖之间的版本是如何关联的,此项目的直接依赖和间接依赖都要导入进来。

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

如今使用maven避免了管理所需依赖的关系,maven的依赖具有传递性,只需要在pom.xml文件中定义直接依赖,maven就会自动把此依赖所依赖的其他jar包也一起导入。

依赖排除

随着项目越来越复杂,库之间的依赖关系也会越来越复杂,此时可以进行一些依赖排除。比如上图中需要jarA,但是并不需要jarB。

  • 依赖排除:主动断开依赖的资源(被排除的资源无需指定版本)
XML 复制代码
<dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-core</artifactId>
     <version>6.0.6</version>

     <!--排除依赖-->
     <exclusions>
         <exclusion>
             <artifactId>spring-jcl</artifactId>
             <groupId>org.springframework</groupId>
         </exclusion>
     </exclusions>
</dependency>

Maven Helper插件 --- 观察包和包之间的依赖关系找到冲突,解决依赖冲突

依赖调节、可选依赖

当项目中的依赖存在依赖冲突时,Maven会采用最短路径的原则选择依赖(A->D->X),当然我们也可以选择指定某个依赖的版本(2.0)

  • A->B->C->X(1.0) (×)
  • A->D->X(2.0) ( )
步骤
  1. 解析pom.xml文件获取所有配置的依赖信息
  2. 根据pom.xml、setting.xml配置,maven查找本地仓库和远程仓库(中央、私服、公共)
  3. 下载依赖添加到项目中
  4. 检查所有依赖的版本冲突,解决版本冲突
原理

mvnrepository.com相当于一个中央仓库的目录服务,是一个查询网站,提供了中央仓库中可用构件的详细信息,包括版本、依赖关系等。

maven根据pom.xml文件中的groupId、artifactId、version的配置来唯一识别一个jar包

maven查找仓库的顺序:

  • 本地仓库:自己计算机上的一个目录(用于存储jar包)
  • 私服:一般由公司团队搭建的私有仓库
  • 中央仓库:maven软件中内置一个中央仓库地址,服务于整个互联网,全球唯
Maven设置国内源

主要是为了提高下载速度,可以给maven设置国内源,另外还可以避免访问限制、减少对中央仓库的负担

可以在setting.xml文件中进行配置:(上图中User settings files中有此文件地址)

XML 复制代码
<mirror>
     <id>aliyunmaven</id>
     <mirrorOf>central</mirrorOf>
     <name>阿⾥云公共仓库</name>
     <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

上述配置的内容只对当前项目生效,为了让后续的项目也生效,需要重新设置一下新项目的Settings。让新项目和当前项目共用一个settings文件即可。

修改Maven目录的地址

这个目录里面放了两个东西,一个是本地仓库,一个是settings.xml

上面说了Maven查找依赖的顺序是:本地仓库--->远程仓库

若本地仓库未找到,Maven会从配置的远程仓库下载依赖到本地仓库,然后再使用这些依赖。并且这样在下次构建项目时就可以直接从本地仓库中获取这些依赖项,无需再从中央仓库下载,从而提高了构建速度。

但这样随着项目和依赖的增加,会使本地仓库占用大量空间,导致系统空间不足,况且maven目录的默认地址还是在C盘

所以我们最好还是修改下maven目录的地址,确保有足够的空间存储本地仓库中的依赖

(1)创建你期望放置的目录

(2)进入当前(默认)maven的配置目录 C:\Users\86159\.m2,复制此目录下的文件到D:\Maven

(3)修改IDEAL配置

①配置当前项目中路径

②新项目设置

相关推荐
Lee川9 小时前
面试通关:JWT 认证与双 Token 机制深度解析
后端·面试
想学习java初学者11 小时前
SpringBoot整合Vertx-Mqtt多租户(优化版)
java·spring boot·后端
AC赳赳老秦12 小时前
政企内网落地:OpenClaw 离线环境深度适配方案,无外网场景下本地化模型对接与全功能使用
java·大数据·运维·python·自动化·deepseek·openclaw
weixin_4491736512 小时前
在 Java 中,‌线程安全的 List‌ 主要有以下几种实现方式,它们的效率取决于具体的使用场景(尤其是读写比例):
java·线程安全的list
砚底藏山河12 小时前
股票数据API接口:如何获取股票历历史分时KDJ数据
java·python·maven
Csvn12 小时前
Python 性能优化与 Profiling 工具
后端·python
不减20斤不改头像13 小时前
手机一句话开发贪吃蛇!TRAE SOLO 移动端 AI 编程实测
前端·后端
明月_清风13 小时前
K8s 从入门到上手:核心概念+常用工具全解析
后端·kubernetes
随风,奔跑13 小时前
Nginx
服务器·后端·nginx·web
MegaDataFlowers13 小时前
运行若依项目
java