什么是Maven以及如何配置Maven

1 篇文章 0 订阅

在这里插入图片描述

T04BF

👋专栏: 算法|JAVA|MySQL|C语言

🫵 今天你敲代码了吗

1.Maven

1.1什么是Maven

官方对于Maven的描述:

Apache Maven is a software project management and comprehension tool.
Based on theconcept of a project object model (POM), Maven can manage
a project’s build, reporting anddocumentation from a central piece
ofinformation.
即Maven是一个项目管理工具。基于POM(project Object
Model,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具

也就是说,Maven就是一个项目管理工具,通过pow.xml文件的配置获取jar包,而不是之前的手动添加jar包

1.2Maven的好处

就是为了简单,方便,提高开发效率,减少开发bug

1.3使用idea创建一个Maven项目

在这里插入图片描述
在这里插入图片描述

1.4Maven的核心功能

主要体现在两个方面

1.4.1项目构建

Maven为我们提供了一套简单命令来完成项目的构建
在这里插入图片描述

就比如常见的打jar包操作,点击package就能完成项目的打包操作
在这里插入图片描述

1.4.2 依赖管理

依赖配置
使用Maven后,我我们不再手动添加jar包,而是通过pom.xml文件的配置获取jar包,这里的jar包实际上就是依赖
就比如使用javaFx,我们需要手动将javaFX的包下载下来,添加到项目里面
在这里插入图片描述

但是如果使用Maven,我们只需要在pom.xml中引入javaFx的依赖即可

<dependencies>
    <!--里面添加项目的依赖坐标,可以是多个-->
 </dependencies>

如果要添加javaFx依赖,那就是

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.openjfx/javafx-controls -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>17.0.11</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.openjfx/javafx-graphics -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-graphics</artifactId>
        <version>17.0.11</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.openjfx/javafx-base -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-base</artifactId>
        <version>17.0.11</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.openjfx/javafx-fxml -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>17.0.11</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.openjfx/javafx-swing -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-swing</artifactId>
        <version>17.0.11</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.openjfx/javafx-web -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-web</artifactId>
        <version>17.0.11</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.openjfx/javafx-media -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-media</artifactId>
        <version>17.0.11</version>
    </dependency>
</dependencies>

注意:对pow文件的任意改动都要点击刷新按钮,特别是引入新的jar包
在这里插入图片描述

此时就能看到新加入的jar包
在这里插入图片描述

依赖传递
在导入某些jar包的时候,可能某些jar包同时也引用了其他的jar包,那么就需要将所有的jar包都复制到项目底下
如果我们不使用Maven,那么就需要知道每个库都依赖哪些库,以及这些库之间的关系是什么样的,就比较复杂

但是如果使用Maven,就可以避免管理依赖之间的关系,只需要在pom文件中直接定义依赖即可,由于maven的依赖具有传递性,就会自动将这个依赖所依赖的其他jar包一起导入
在这里插入图片描述
如图所示,项目A通过Maven引入jarA时,就会自动引入jarB和jarC
此时jarA和项目B就是项目A的直接依赖
jarB和jarC是间接依赖

依赖排除
如上图所示,如果项目A不需要jarB,也可以通过排除依赖的方式来实现
排除依赖即主动断开依赖(被排除的资源无需指定版本)

<dependencies>
    <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>
</dependencies>

我们也可以通过插件更方便的解决这类问题
在这里插入图片描述

在这里插入图片描述

在这个页面就可以直接排除依赖
在这里插入图片描述

依赖调解
当项⽬中的依赖存在依赖冲突时
Maven会采⽤最短路径优先的原则去选择依赖

1.5Maven仓库

前面讲过,使用maven,我们只需要在pom文件里面,通过短短几行代码就能将依赖的jar包导进项目里面,那么是怎么做到的呢?

    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>17.0.11</version>
    </dependency>

这几行代码就称为"坐标",是唯一的

实际上在Maven里,就是通过groupId,artifactId,version的配置,来唯一识别一个jar包,这三者缺一不可
当我们在pom⽂件中配置完依赖之后, 点击刷新, Maven会根据坐标的配置, 去仓库⾥寻找Jar包, 并把他 下载下来, 添加到项⽬中. 这个Jar包下载的地⽅就称为仓库.

Maven仓库分为两大类:本地仓库和远程仓库
1.5.1 本地仓库

是自己计算机上对应的一个目录,首先会查找本地仓库里面是否有对应的jar包
当项目中引入对应的依赖之后,首先会查找本地仓库里面是否有让对应的jar包
如果有的话就直接引用,没有的话则去中央仓库下载对应的jar包到本地仓库

在这里插入图片描述

本地仓库地址可以通过Maven配置查看
在这里插入图片描述

1.5.2 中央仓库

中央仓库: maven 软件中内置⼀个远程仓库地址,就是中央仓库,服务于整个互联⽹. 由 Maven 团队 维护,全球唯⼀.
仓库地址:https://repo1.maven.org/maven2
可以通过https://mvnrepository.com 这个⽹站来查询并下载

1.5.3 私有服务器(私服)

私服: ⼀般由公司团队搭建的私有仓库.
私服属于某个公司,或者某个部⻔, 往往需要⼀定权限.
有了私服之后, Maven依赖下载的顺序就发生了变化

在这里插入图片描述

(1)先从本地仓库获取, 本地仓库存在, 则直接返回
(2) 如果本地仓库没有, 就从私服请求, 私服存在该资源, 就直接返回
(3) 如果私服上不存在该资源,则从中央仓库下载, 中央仓库不存在, 就报错了
(4) 如果中央仓库中存在, 就先缓存在私服上之后,再缓存到本地仓库⾥, 再为Maven的下载请求提供服务

1.6Maven设置国内源

因为中央仓库在国外,因此访问下载起来会比较慢,因此我们设置国内源
修改Maven的配置文件在本文资源直接下载即可

在这里插入图片描述
将此文件覆盖在此路径

感谢您的访问!!期待您的关注!!!

在这里插入图片描述

T04BF

🫵 今天记得敲代码
  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值