首页 > 其他分享 >Maven基础

Maven基础

时间:2024-07-31 12:27:58浏览次数:17  
标签:生命周期 项目 仓库 基础 Maven 依赖 坐标

什么是Maven

Maven是apache旗下的一个开源项目,是一款用于管理和构建Java项目的工具,基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建

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

Maven的作用

方便的依赖管理:方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题

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

标准的项目构建流程:标准跨平台(Linux、Windows、MacOS)的自动化项目构建方式

Maven模型

构建生命周期/阶段:通过各种各样的插件,可以完成各种各样的功能,实现Java项目标准化的构建。执行这些操作的时候,不同的阶段会产生不同的文件,这些文件统一保存在target目录下

仓库:用于存储资源,管理各种jar包

  • 本地仓库:自己计算机上的一个目录

  • 中央仓库:由Maven团队维护的全球统一的

  • 远程仓库(私服):一般由公司团队搭建的私有仓库

查找顺序:中央仓库->远程仓库(私服)->中央仓库

Maven坐标

什么是坐标

  • Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置
  • 使用坐标来定义项目或引入项目中需要的依赖

Maven坐标主要组成

  • groupld:定义当前Maven项目隶属组织名称(通常是域名反写)
  • artifactld:定义当前Maven项目名称(通常是模块名称)
  • version:定义当前项目版本号

依赖配置

依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖

配置:

  1. 在pom.xml中编写dependencies标签

  2. 在dependencies标签中,使用dependency引入坐标

  3. 定义坐标的groupld、artifactld、version

  4. 点击刷新按钮,引入最新加入的坐标

注意事项:

  • 如果引入的依赖,在本地仓库中不存在,将会连接远程仓库/中央仓库,然后下载依赖(这个过程会比较耗时,耐心等待)
  • 如果不知道依赖的坐标信息,可以到mvnrepository.com中搜索

依赖传递

Maven中的依赖具有传递性

  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  • 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
  • 排除依赖:排除依赖指主动断开依赖的资源,被排除的资源无需指定版本

依赖范围

依赖的jar包,默认情况下,可以在任何地方使用。可以通过scope标签设置其作用范围

作用范围:

  • 主程序范围有效(main文件夹范围内)
  • 测试程序范围有效(test文件夹范围内)
  • 是否参与打包运行(package指令范围内)

生命周期

Maven的生命周期就是为了对所有的Maven项目构建过程进行抽象和统一

Maven中有3套相互独立的生命周期:

  • clean:清理工作

  • default:核心工作(编译、测试、打包、安装、部署等)

  • site:生成报告、发布站点等

每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段

注意事项:在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行

执行指定生命周期的两种方式:

  • 在idea中,右侧的maven工具栏,选中对应的生命周期,双击执行
  • 在命令行中,通过命令执行

总结:Maven的生命周期以及生命周期的各个阶段都是抽象的概念,并不执行具体的操作,它的具体操作是由与其绑定的maven插件完成的,因为maven的本质就是插件执行框架,所有的操作都是由插件完成的。

标签:生命周期,项目,仓库,基础,Maven,依赖,坐标
From: https://blog.csdn.net/qq_64737356/article/details/140819022

相关文章

  • 编程基础四大件
    简述在计算机这个领域中,比编程语言更重要的是基础四大件:数据结构和算法计算机网络计算机操作系统&计算机组成原理设计模式再次强调,编程基础4大件比编程语言本身要重要的多,如果你是某门语言的初学者,如果你掌握了一门编程语言并想提升编程能力,如果你正跋涉于计算机领域的行......
  • 适用于 JDK 1.8 的 Spring Boot 的 maven 的 pom.xml 模板
    适用于JDK1.8的SpringBoot的maven的pom.xml模板 <?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:sche......
  • 零基础快速上手STM32开发(手把手保姆级教程)
    1前言作为一名嵌入式工程师,STM32是必须要学习的一款单片机,同时这款单片机资料足够多,而且比较简单,非常适合初学者入门。STM32是一款由STMicroelectronics公司开发的32位微控制器,由于其强大的处理能力和广泛的应用领域,如嵌入式系统、物联网设备、机器人等,而受到了广泛的欢......
  • Java的基础05(类型转换)
    类型转换   概念由于java是强类型语言,所以在进行有些运算时需要用到类型转换;低——————————>高byte,short,char--->int--->long(64)--->float(32)--->double(小数的优先级一定大于整数)运算中,不同类型的数据先转化为同一类型,然后进行运算;强制类型转换;自动类型......
  • Java基础入门(第一章)
    1Java是什么:Java是一门非常优秀的计算机编程语言Java英文翻译为印尼爪哇岛,地名,因盛产咖啡而闻名,漫漫长夜、唯有咖啡陪伴程序员1991年诞生,最初叫Oak(橡树),1995年改名为Java,2000年前后,成为世界上最流行的编程语言,过去二十多年中首屈一指。语言,人与人交流沟通的表达方式。......
  • 【C++】入门基础
     1.命名空间1.1namespace的价值在C/C++中,变量、函数和后⾯要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全局作⽤域中,可能会导致很多冲突。使⽤命名空间的⽬的是对标识符的名称进⾏本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的......
  • Java基础知识
    @目录一、第一个java程序二、Java中标识符的使用三、Java中的数据类型1.基本数据类型2.引用数据类型3.String类型变量的使用(字符串类型)四、Java中的运算符1.算数运算符2.赋值运算符3.比较运算符4.逻辑运算符5.位运算符6.三元运算符一、第一个java程序publicclasshello{......
  • 【数据结构】之线段树理解与基础模板
    什么是线段树线段树是一种通过类似二分来实现的一种二叉树结构,方便区间的修改与性质的查询,是一种非常节约时间的数据结构。为什么使用线段树比如我们给你NNN......
  • 【自动化测试必学语言】python:语言基础
    目录Python介绍语言的分类注释单行注释多行注释变量定义变量使用变量变量名的命名规范数据类型数字类型非数字类型type()函数input输入print输出格式化输出快捷键(小操作)运算符算术运算符 比较运算符Python介绍作者:吉多·范罗苏姆(Guidov......
  • Python基础知识笔记——常用函数
    一、range()函数range()函数用于生成一个整数序列。它通常用于循环结构中,例如for循环,以提供循环的迭代次数。range()函数可以有1到3个参数。#range(start,stop,step)range(2,6,2)#生成从2开始,到6结束(不包括6),步长为2的一串数字#参数指定不完全时,默认从0开始,步长......