Maven介绍 主要包括Maven的基本介绍,作用,以及对应的Maven模型,可以对Maven有一个基本的了解

devtools/2024/10/18 22:34:55/

1、Maven介绍

1.1 什么是Maven

Maven是Apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。

官网:https://maven.apache.org/

Apache 软件基金会,成立于1999年7月,是目前世界上最大的最受欢迎的开源软件基金会,也是一个专门为支持开源项目而生的非盈利性组织。

开源项目:https://www.apache.org/index.html#projects-list

1.2 Maven的作用

使用Maven能够做什么呢?

  1. 依赖管理
  2. 统一项目结构
  3. 项目构建

依赖管理

  • 方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题
    在这里插入图片描述

当使用maven进行项目依赖(jar包)管理,则很方便的可以解决这个问题。 我们只需要在maven项目的pom.xml文件中,添加一段如下图所示的配置即可实现。

在这里插入图片描述

统一项目结构:

  • 提供标准、统一的项目结构

在项目开发中,当你使用不同的开发工具 (如:Eclipse、Idea),创建项目工程时:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

若我们创建的是一个maven工程,是可以帮我们自动生成统一、标准的项目目录结构:

具体的统一结构如下:

目录说明:

  • src/main/java: java源代码目录
  • src/main/resources: 配置文件信息
  • src/test/java: 测试代码
  • src/test/resources: 测试配置文件信息

项目构建 :

  • maven提供了标准的、跨平台(Linux、Windows、MacOS) 的自动化项目构建方式

在这里插入图片描述

如上图所示我们开发了一套系统,代码需要进行编译、测试、打包、发布,这些操作如果需要反复进行就显得特别麻烦,而Maven提供了一套简单的命令来完成项目构建。

在这里插入图片描述

综上所述,可以得到一个结论:Maven是一款管理和构建java项目的工具

1.3 Maven模型

  • 项目对象模型 (Project Object Model)
  • 依赖管理模型(Dependency)
  • 构建生命周期/阶段(Build lifecycle & phases)

1). 构建生命周期/阶段(Build lifecycle & phases)

在这里插入图片描述

以上图中紫色框起来的部分,就是用来完成标准化构建流程 。当我们需要编译,Maven提供了一个编译插件供我们使用;当我们需要打包,Maven就提供了一个打包插件供我们使用等。

2). 项目对象模型 (Project Object Model)

在这里插入图片描述

以上图中紫色框起来的部分属于项目对象模型,就是将我们自己的项目抽象成一个对象模型,有自己专属的坐标,如下图所示是一个Maven项目:

在这里插入图片描述

坐标,就是资源(jar包)的唯一标识,通过坐标可以定位到所需资源(jar包)位置

在这里插入图片描述

3). 依赖管理模型(Dependency)

在这里插入图片描述

以上图中紫色框起来的部分属于依赖管理模型,是使用坐标来描述当前项目依赖哪些第三方jar包

之前我们项目中需要jar包时,直接就把jar包复制到项目下的lib目录,而现在书写在pom.xml文件中的坐标又是怎么能找到所要的jar包文件的呢?

答案:Maven仓库

Maven仓库分为:

  • 本地仓库:自己计算机上的一个目录(用来存储jar包)
  • 中央仓库:由Maven团队维护的全球唯一的。仓库地址:https://repo1.maven.org/maven2/
  • 远程仓库(私服):一般由公司团队搭建的私有仓库

在这里插入图片描述

当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包

  • 如果有,则在项目直接引用

  • 如果没有,则去中央仓库中下载对应的jar包到本地仓库

如果还可以搭建远程仓库(私服),将来jar包的查找顺序则变为: 本地仓库 --> 远程仓库–> 中央仓库


http://www.ppmy.cn/devtools/33424.html

相关文章

Stacking算法:集成学习的终极武器

Stacking算法:集成学习的终极武器 在机器学习的竞技场中,集成学习方法以其卓越的性能而闻名。其中,Stacking(堆叠泛化)作为一种高级集成技术,更是被誉为“集成学习的终极武器”。本文将带你深入了解Stacki…

vue - 基本使用

转载改编自:https://www.bilibili.com/video/BV1Ap4y1W7MG/ 文章目录 二、Composition API(组合式API)1、setup2、API - ref3、API - reactive (对象)4、API - toRefs 三、Provide与Inject(提供/注入&#…

MATLAB实现遗传算法优化第三类生产线平衡问题

第三类生产线平衡问题的数学模型 假设: 工作站数量(m)和生产线节拍(CT)是预设并固定的。每个任务(或作业元素)只能分配到一个工作站中。任务的执行顺序是预先确定的,且不可更改。每…

Qt窗口

QMainWindow Qt 窗⼝ 是通过 QMainWindow类 来实现的。 QMainWindow 是⼀个为⽤⼾提供主窗⼝程序的类,继承⾃ QWidget 类,并且提供了⼀个预定义的 布局。QMainWindow 包含 ⼀个菜单栏(menu bar)、多个⼯具栏(tool bars)、多个浮动…

星辰考古:TiDB v1.0 再回首

“ 1.0 版本只是个开始,是新的起点,愿我们一路相扶,不负远途。 前言 TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库。 近日,TiDB v8.0.0 DMR 发布,详细发版说明戳这里: https://docs.pingca…

算法打卡day41

今日任务: 1)198.打家劫舍 2)213.打家劫舍II 3)337.打家劫舍III 4)复习day16 198.打家劫舍 题目链接:198. 打家劫舍 - 力扣(LeetCode) 你是一个专业的小偷,计划偷窃沿街…

安装“STM32F4 Discovery Board Programming with Embedded Coder”MATLAB获取硬件支持包失败

安装“STM32F4 Discovery Board Programming with Embedded Coder”MATLAB获取硬件支持包失败 -完美解决方法 显示请续订您的软件维护服务,解决办法 根据知乎的文章 MATLAB获取硬件支持包失败,显示请续订您的软件维护服务,解决办法&#xff…

STM32 串口IDLE接收空闲中断+DMA

参考 http://t.csdnimg.cn/fAV38 1.基础知识 STM32 IDLE 接收空闲中断 功能: 在使用串口接受字符串时,可以使用空闲中断(IDLEIE置1,即可使能空闲中断),这样在接收完一个字符串,进入空闲状态时&…