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配置

①配置当前项目中路径

②新项目设置

相关推荐
AiFlutter33 分钟前
Java实现简单的搜索引擎
java·搜索引擎·mybatis
飞升不如收破烂~1 小时前
Spring boot常用注解和作用
java·spring boot·后端
秦老师Q1 小时前
Java基础第九章-Java集合框架(超详细)!!!
java·开发语言
计算机毕设源码qq-38365310411 小时前
(附项目源码)Java开发语言,215 springboot 大学生爱心互助代购网站,计算机毕设程序开发+文案(LW+PPT)
java·开发语言·spring boot·mysql·课程设计
ashane13141 小时前
Java list
java·windows·list
袁庭新1 小时前
Cannal实现MySQL主从同步环境搭建
java·数据库·mysql·计算机·java程序员·袁庭新
无尽的大道1 小时前
深入理解 Java 阻塞队列:使用场景、原理与性能优化
java·开发语言·性能优化
何遇mirror1 小时前
云原生基础-云计算概览
后端·云原生·云计算
岁岁岁平安1 小时前
springboot实战(15)(注解@JsonFormat(pattern=“?“)、@JsonIgnore)
java·spring boot·后端·idea
Oak Zhang1 小时前
TheadLocal出现的内存泄漏具体泄漏的是什么?弱引用在里面有什么作用?什么情景什么问题?
java·系统安全