什么是Maven及如何配置国内源实现自动获取jar包的操作

 更新时间:2024年11月18日 14:50:46   作者:GGBondlctrl  
本文介绍了Maven的基本概念,包括项目构建、依赖管理、仓库管理以及如何设置国内源,通过Maven,开发者可以自动化管理项目的依赖和构建流程,提高开发效率,感兴趣的朋友跟随小编一起看看吧

📚️1.Maven的了解

1.1什么是Maven

 在官方的文档中对于Maven的介绍是如下所示的:Welcome to Apache Maven – Maven

 翻译过来就是: Maven是⼀个项⽬管理⼯具。基于POM(Project Object Model,项⽬对象模型)的概念,Maven可以通 过⼀⼩段描述信息来管理项⽬的构建,报告和⽂档的项⽬管理⼯具软件。

但是大白话就是:

Maven是⼀个项⽬管理⼯具, 通过pom.xml⽂件的配置获取jar包,⽽不⽤⼿动去添加jar包 

1.2创建一个Maven项目

那么接下来就跟着小编进行操作吧~~~

注意:IDEA本⾝已经集成了Maven, 我们可以直接使⽤, ⽆需安装

步骤:File -> New -> Project

如下图所示:

然后点击创建即可,此时我们就成功创建了一个Maven项目;

1.3Maven的核心功能

1.项目构建

Maven 提供了标准的,跨平台(Linux, Windows, MacOS等)的⾃动化项⽬构建⽅式

当我们开发了⼀个项⽬之后, 代码需要经过编译, 测试, 打包, 发布等流程, 每次代码的修改, 都需要经过 这些流程, 如果代码反复调试修改, 这个流程就需要反复进⾏, 就显得特别⿇烦,, ⽽Maven 给我们提供了 ⼀套简单的命令来完成项目的构建

点击右边框的Maven按键:

然后点击这里的打包按钮,此时那么就进行打包的操作了,具体控制台的显示如下:

并且,我们可以发现此时在我们的项目创建的栏目中可以看到,多了一个jar为后缀的项目,就是我们所打的jar包:

解释:

打包就是把所有的class⽂件, 全部放在⼀起, 打成jar包或者war包 jar包和war包都是⼀种压缩⽂件

jar包:就是把开发⼈员已经写好的⼀些代码进⾏打包. 打好的jar包就可以引⼊到其他项⽬中, 也可以直 接使⽤这些jar包中的类和属性.

打成可执⾏jar包:这样的包就可以通过java -jar命令来执⾏

war包:可以理解为是⼀个web项⽬,⾥⾯是项⽬的所有东西, 通常⽤于⽹站

2.管理依赖

上⾯说到, Maven是⼀个项⽬管理⼯具, 通过pom.xml⽂件的配置获取jar包,⽽不⽤⼿动去添加jar包 获取的jar包, 其实就是依赖

依赖配置

在之前学习JDBC的时候,我们要添加mysql-connector-java的包.并且添加到项⽬中,此时才可以建立数据库与idea的连接

此时我们使用Maven的时候,直接可以通过代码操作直接导入jar包的操作,我们只需要在pom.xml中引⼊mysql-connector-java的依赖就可以了;

此时代码如下所示:

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.30</version>
    </dependency>
</dependencies>

解释:

在<dependencies>中部的所有代码描述的就是建立依赖的坐标

注意引入代码后一定要记得刷新页面;

Maven管理依赖的好处

使⽤maven的话, 就可以避免管理所需依赖的关系。我们只需要在pom⽂件中, 定义直接依赖就可以 了, 由于maven的依赖具有传递性,所以会⾃动把所依赖的其他jar包也⼀起导⼊

如下图所示:

解释:

在Maven项目引入jar包A后,那么此时就会自动的引入jar包A所依赖的jar包,那么此时就会自动一如jar包B与jar包C;

依赖的排除

当前阶段我们需要依赖的库并不多, 但随着项⽬的越来越复杂, 库之间的依赖关系也会变得越来越复杂. 如上图中, 如果项⽬A不需要Jar B,也可以通过排除依赖的⽅式来实现

此时我们主动使用代码进行依赖的排除:

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

但是在idea中有一个插件可以帮助执行依赖的排除;

Maven helper插件

当项⽬⽐较复杂时, 我们就会有Jar包冲突的问题, 这时候就需要去解决依赖冲突. 解决冲突之前, 需要先 找到冲突, 我们可以使⽤Maven Help插件来观察包和包之间的依赖关系

下载方式:

File -> Settings ->Plugins -> 搜索'Maven Help' -> 找到对应插件, 点击Install 安装即可, 安装 后需要重启下idea, 才能⽣效

图示如下:

注意:下载后记得一定一定要进行重启的操作;

然后我们点击下面的依赖选项,可以看到依赖的关系:

此时我们可以通过手动右击鼠标,然后就可以进行手动的删除这里的某些依赖;

📚️2.Maven的仓库

我们通过短短⼏⾏代码, 就把依赖jar包放在了项⽬⾥, 具体是如何做的呢?

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.30</version>
    </dependency>
</dependencies>

解释:

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

Maven仓库分为两⼤类: 本地仓库和远程仓库. 其中远程仓库⼜分为中央仓库, 私服 和其他公共库

2.1本地仓库

本地仓库: ⾃⼰计算机上的⼀个⽬录(⽤来存储jar包) 当项⽬中引⼊对应依赖jar包后,⾸先会查找本地仓库中是否有对应的jar包 • 如果有,则在项⽬直接引⽤ • 如果没有,则去中央仓库中下载对应的jar包到本地仓库;

本地仓库地址可以通过Maven配置查看:

注意:小编这里的本地仓库已经是通过了国内源的配置的(下文有讲到) 

2.2中央仓库 

中央仓库: maven 软件中内置⼀个远程仓库地址,就是中央仓库,服务于整个互联⽹. 由 Maven 团队 维护,全球唯⼀.

仓库地址:https://repo1.maven.org/maven2/

可以通过https://mvnrepository.com 这个⽹站来查询并下载

我们可以把⾃⼰写好的Jar包上传到中央仓库(具备⼀定的要求), 也可以从中央仓库下载Jar包

例如:我们进行jar包的查询

这里由于是国外的网站,所以访问比较慢,所以小编推荐使用加速器~~~

点击进入:

 注意:一般来说点击没有漏洞的,并且这里的使用的人数尽可能多,这里点击8.3.0~~~

往下面进行翻,可以看到此时的依赖的代码;

这就是我们添加进入我们idea中的依赖的代码源,就是我们jar包的坐标;

2.3私有服务器

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

如图所示:

解释:

1. 先从本地仓库获取, 本地仓库存在, 则直接返回

2. 如果本地仓库没有, 就从私服请求, 私服存在该资源, 就直接返回

3. 如果私服上不存在该资源,则从中央仓库下载, 中央仓库不存在, 就报错了...

4. 如果中央仓库中存在, 就先缓存在私服上之后,再缓存到本地仓库⾥, 再为Maven的下载请求提供服 务

2.4Maven设置国内源

因为中央仓库在国外, 所以下载起来会⽐较慢, 所以咱们选择借助国内⼀些公开的远程仓库来下载资源 接下来介绍, 如何设置国内源

国内使⽤时会⽐较慢,我们可以更换为阿⾥云 的仓库

打开settings.xml, 在 mirrors 节点上,添加内容如下:

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

然后将这个这个settings的xml文件添加到第一排这个文件路径目录上

小编这里是将这里的repository复制到新的路径上面去了,所以这里的路径就不是默认的;

然后这里的setting的文件就是如下:

点击进入:小编这里使用的是sublime文本编辑器,所以具体的样式就是如下所示的:

小编这里只截取了一小部分,所以就在你们的settings中添加就可以了,如果没有就私信小编哦,小编为你解答~~~

📚️3.总结

本期总结了关于Maven在项目开发中的重要作用,从什么是Maven到理解它的核心功能,以及如何管理它的仓库,进行jar包坐标的配置,以及如何设置国内源都进行了详细的讲述;

到此这篇关于什么是Maven,以及如何配置国内源实现自动获取jar包的文章就介绍到这了,更多相关Maven自动获取jar包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java使用Scala实现尾递归优化来解决爆栈问题

    Java使用Scala实现尾递归优化来解决爆栈问题

    Scala 作为一种多范式的编程语言,结合了面向对象和函数式编程的特性,在 Scala 中,尾递归 是通过编译器优化来防止栈溢出问题的,尾递归优化是一种特殊的优化方式,可以让递归调用不使用新的栈帧,所以本文介绍了在Java项目中如何使用Scala实现尾递归优化来解决爆栈问题
    2024-10-10
  • Java线程阻塞和唤醒的几种方式详解

    Java线程阻塞和唤醒的几种方式详解

    这篇文章主要介绍了Java线程阻塞和唤醒的几种方式详解,线程阻塞是指当一个线程无法继续执行时,它会进入阻塞状态,直到某个条件满足后才能继续执行,线程阻塞可以通过多种方式实现,如等待锁、等待IO操作、等待其他线程的完成等,需要的朋友可以参考下
    2023-10-10
  • Java Character类的详解

    Java Character类的详解

    本篇文章主要详细介绍了JAVA中 Character类 方法等,需要的朋友可以参考下
    2017-04-04
  • SpringBoot3.0集成MybatisPlus的实现方法

    SpringBoot3.0集成MybatisPlus的实现方法

    本文主要介绍了SpringBoot3.0集成MybatisPlus的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • 详解基于java的Socket聊天程序——客户端(附demo)

    详解基于java的Socket聊天程序——客户端(附demo)

    这篇文章主要介绍了详解基于java的Socket聊天程序——客户端(附demo),客户端设计主要分成两个部分,分别是socket通讯模块设计和UI相关设计。有兴趣的可以了解一下。
    2016-12-12
  • Java更新调度器(update scheduler)的使用详解

    Java更新调度器(update scheduler)的使用详解

    Java更新调度器是Java中的一个特性,可以自动化Java应用程序的更新过程,它提供了一种方便的方式来安排Java应用程序的更新,确保其与最新的功能、错误修复和安全补丁保持同步,本文将深入介绍如何使用Java更新调度器,并解释它对Java开发人员和用户的好处
    2023-11-11
  • java中封装的实现方法详解

    java中封装的实现方法详解

    在本篇文章里我们给大家详细分享了关于java中封装的实现方法,有需要的朋友们跟着学习下。
    2018-10-10
  • SpringBoot整合Mysql和Redis的详细过程

    SpringBoot整合Mysql和Redis的详细过程

    这篇文章主要介绍了SpringBoot整合Mysql和Redis的示例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • 多线程下嵌套异步任务导致程序假死问题

    多线程下嵌套异步任务导致程序假死问题

    这篇文章主要介绍了多线程下嵌套异步任务导致程序假死问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Java Stream如何将List分组成Map或LinkedHashMap

    Java Stream如何将List分组成Map或LinkedHashMap

    这篇文章主要给大家介绍了关于Java Stream如何将List分组成Map或LinkedHashMap的相关资料,stream流是Java8的新特性,极大简化了集合的处理操作,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12

最新评论