当前位置: 首页 > article >正文

Maven 快速上手

目录

1. Maven简介

2. Maven的功能

(1) 项目构建

(2) 依赖管理

[项目依赖]:

[依赖传递]:

[依赖排除]:

3. Maven Helper 插件

(1) 概述

(2)安装

4. Maven 仓库 

(1) 仓库

(2) 本地仓库和远程仓库

[本地仓库]:

[中央仓库]: 

[私服]:

5. 配置Maven国内源


1. Maven简介

Maven 是一个用于项目管理和构建自动化工具, 主要用于 Java 项目. 它可以帮助开发者管理项目的构建, 报告和文档.

简单来讲, Maven是一个项目管理工具, 通过pom.xml的文件配置获取jar包, 而不用手动获取.

那我们进行Java开发为什么要学习Maven呢? --> 提高开发效率.

[补充]:

(1) 什么是jar包:

        jar包 (Java Archive ("Java存档")) 是一种用于存储Java文件和相关配置文件的文件格式, 它本质上是一种压缩文件, 以.jar为扩展名. jar包的设计目的是方便将Java程序进行打包, 使得打包后的Java代码更易于管理和部署.

(2) 什么是pom文件: 

        pom.xml文件是Maven项目的核心文件, 全称为Project Object Model (项目对象模型). 它是一个 XML 格式的文件, 用于定义 Maven 项目的基本信息, 构建配置, 依赖关系以及项目所使用的插件等重要信息. Maven 会根据pom.xml文件中的信息来执行各种项目管理和构建任务.

2. Maven的功能

(1) 项目构建

Maven 提供了标准的, 跨平台的自动化项目构建方式.

当我们开发了一个项目之后, 代码需要经过编译, 测试, 打包, 发布等流程. 每次代码修改之后, 都需要再次经历这些流程. 如果代码反复调试修改, 这个流程就要反复地进行, 十分不方便.

而Maven就给我们提供了⼀套简单的命令来完成. 

 比如, 我们点击package, 就可以自动完成项目的打包工作:

此时我们查看target文件夹, 其目录下就会多出一个jar包. 这个jar包就是我们刚刚通过package打包创建的. 

[补充]:

打包, jar包和war包 是什么?

打包就是把所有的class文件, 全部放到一起, 打成jar包或者war包. jar包和war包都是压缩文件的一种.

  • jar包就是把开发人员已经写好的代码进行打包. 打好的jar包可以直接引入到其他项目中, 也可以直接使用这些jar包中的类和属性. 也可以打成可执行jar包, 这样的包就可以通过java -jar命令来执行. 
  • war包可以理解为是⼀个web项目, 里面包含项目中的所有东西, 通常适用于网站的开发. 

(2) 依赖管理

[项目依赖]:

什么是依赖? --> 上面说道, Maven是项目管理工具, 通过pom.xml文件中的配置来获取当前项目运行所需要的jar包. 这里 当前项目运行所需要的jar包 就叫做 依赖.

pom.xml 就是Maven的配置文件, 用来描述项目的信息, 管理项目的依赖.

依赖配置: 

例如: 我们之前在学习JDBC时, 需要手动下载 mysql-connector-java 的包并将其手动添加至项目中. 但是如果我们使用Maven, 只需要在pom.xml中引入 mysql-connector-java 的依赖就可以了.

    <dependencies>
        <!-- 在里面添加依赖坐标-->
    </dependencies>

我们需要在pom.xml文件中的 <dependencies> 标签中添加mysql-connector-java的依赖坐标, 格式如下:

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

添加新的jar包之后, 我们需要 (点击刷新按钮) 刷新Maven 以引入新的依赖. 否则无法引入.

刷新之后, 我们就可以在 Maven -- Dependencies 中查看到我们新添加的依赖了:

[依赖传递]:

在早期不使用Maven管理依赖的jar包时, 如果某jar包还依赖于其他包, 其他包又依赖于另外的包, 那么我们就需要把所有依赖的包一起导入到项目中, 如果手动操作这个过程会十分麻烦

但是如果我们使用Maven就会避免上述麻烦的产生. 因为Maven管理的依赖具有传递性: 在导入一个依赖时, 会将这个依赖所依赖的以及和它有传递性的jar包一起导入. 也就是说, 我们只需要在pom.xml文件中添加我们想要的依赖, 那么与之相关的所有依赖就会全部自动导入.

比如, 如上图, 我们在项目A中 通过Maven导入 jarA 时, 会自动导入 jarB 和 jarC.

[依赖排除]:

当前阶段我们添加的依赖并不多, 但是随着项目

越来越复杂, 依赖关系也会变得越来越复杂. 就会产生项目不需要某个已导入依赖的情况, 此时我们可以排除依赖: 即 主动断开依赖的资源.

如上图, 如果项目A不需要 jarB, 就可以通过排除依赖的方式来实现. 排除依赖使用exclusions和exclusion标签, 格式如下:

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

3. Maven Helper 插件

(1) 概述

插件是什么 : 插件(Plugins) 就是对程序的一些特定场景, 做一些特定的扩展.

Maven Helper 插件的主要功能就是"依赖管理". 包括 依赖分析, 冲突检测, 依赖排除 等功能.

(2)安装

我们可以通过: File --> Settings --> Plugins --> 搜索Maven Helper 来安装Maven Helper 插件.

安装好之后, 我们打开pom.xml文件, 会发现下面多出来一栏(Dependency Analyzer).

 在这里我们就可以查看包和包之间的依赖关系, 冲突关系, 以及排除一些依赖.

4. Maven 仓库 

(1) 仓库

Maven通过简单的几行代码就能一个jar包导入进项目中. 那么Maven是如何做到的呢? 

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

如上述代码, 这快代码我们称之为 mysql-connector-java 包的"坐标". 我们知道, 在数学的坐标系中, 某点的坐标是唯一的. 同样地, 在Maven中, 每个jar包的坐标也是唯一的.

Maven中, jar包由 groupId, artifactId, version 三者共同决定, 缺一不可. 也就是说: 这三者共同构成了某jar包的坐标.

当我们在pom.xml文件中配置好依赖之后, 点击刷新, Maven 就会根据我们写的坐标到仓库中去寻找相应的jar包下载下来, 导入到项目中.

jar包下载的地方就叫做"仓库" 仓库本质上就是一个目录(文件夹), 这个文件夹中存放着我们开发所需要的所有依赖.

(2) 本地仓库和远程仓库

Maven 仓库可以分为两大类: 本地仓库和远程仓库. 远程仓库又可以分为: 中央仓库, 私服, 其他公共库 等.

[本地仓库]:

本地仓库就是我们自己的计算机上用来存储jar包的一个目录. 当我们在项目中导入一个jar包时, 会先查找本地仓库是否有这个jar包: 如果有, 直接导入; 如果没有, 再去远程仓库中下载相应的jar包.

我们可以通过File --> Setting --> Maven --> Local respository 来查看本地仓库的地址. 

 打开该目录, 我们可以看到哟很多的文件. (这个目录一开始是空的, 随着Maven的使用, 文件会越来越多)

 

[中央仓库]: 

中央仓库是Maven中内置的一个远程仓库地址. 中央仓库服务于整个互联网, 全球唯一, 由Maven团队维护.

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

我们也可以通过Maven官网来访问中央仓库: https://mvnrepository.com/ 我们查找jar包坐标就是通过这个地址来查找.

查找jar包坐标:

点击版本号, 进去就能查看到jar包的坐标了. 

[私服]:

私服 即私有服务器, 一般是由某公司或某团队搭建的仓库.

在有了私服之后, Maven下载依赖的顺序又发生了变化:

  • 导入某资源: 

(1) 先从本地仓库获取. 如果本地仓库存在该资源, 直接导入.

(2) 如果本地仓库不存在, 再从私服获取. 如果私服存在该资源, 直接导入.

(3) 如果私服中也不存在, 再从中央仓库下载. 如果中央仓库存在该资源, 直接导入.

(4) 如果中央仓库也不存在该资源, 就会报错.

5. 配置Maven国内源

因为中央仓库在国外, 所以下载起来会比较慢, 所以我们选择借助国内一些公开的远程仓库来下载资源. 国内常见的公开远程仓库有: 阿里云, 华为云, 腾讯云 等. 参考: Maven 镜像地址大全 - 知乎.

我们以阿里云仓库为例. 打开settings.xml, 在mirrors节点中, 添加如下代码:

        <mirror>
          <id>aliyunmaven</id>
          <mirrorOf>*</mirrorOf>
          <name>阿里云公共仓库</name>
          <url>https://maven.aliyun.com/repository/public</url>
        </mirror>

这样就给当前项目的配置好国内源了.

但是别忘了也要给新项目配置哈.

 

好了, 完成以上操作, 我们就能流畅地使用Maven管理项目了~


http://www.kler.cn/a/511884.html

相关文章:

  • 【LeetCode: 215. 数组中的第K个最大元素 + 快速选择排序】
  • Vue进阶之旅:核心技术与页面应用实战(路由进阶)
  • 农业农村大数据应用场景|珈和科技“数字乡村一张图”解决方案
  • Spark RPC 学习总结
  • AI时代下 | 通义灵码冲刺备战求职季
  • 通信协议之数据帧常用校验方法(奇偶校验、CRC校验)
  • [2025分类时序异常检测指标R-AUC与VUS]
  • Spring Boot依赖管理:Maven与Gradle实战对比
  • NPM 下载依赖超时:npm ERR! RequestError: connect ETIMEDOUT
  • Tensor 基本操作1 | PyTorch 深度学习实战
  • 【Rust自学】13.9. 使用闭包和迭代器改进IO项目
  • 无监督<视觉-语言>模型中的跨模态对齐
  • vue按照官网设置自动导入后ElMessageBox不生效问题
  • 从零开始:Spring Boot核心概念与架构解析
  • springboot迅捷外卖配送系统
  • STM32CubeIDE使用笔记(一)
  • 【Spring】原型 Bean 被固定
  • 【25】Word:林涵-科普文章❗
  • yum和vim的使用
  • 【Elasticsearch入门到落地】6、索引库的操作
  • Matlab自学笔记四十五:日期时间型和字符、字符串以及double型的相互转换方法
  • React 中hooks之 React useCallback使用方法总结
  • Java 基于微信小程序的原创音乐小程序设计与实现(附源码,部署,文档)
  • Centos7搭建PHP项目,环境(Apache+PHP7.4+Mysql5.7)
  • ubuntu系统文件查找、关键字搜索
  • 2024:成长、创作与平衡的年度全景回顾