初识Maven

news2024/11/16 11:34:45

介绍:

web后端开发技术image.png
ApacheMaven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建。
安装:http://maven.apache.org/

Apache软件基金会,成立于1999年7月,是目前世界上最大的最受欢迎的开源软件基金会,也是一个专门为支持开源项目而生的非盈利性组织。
开源项目:https://www.apache.org/index.html#projects-list


Maven的作用?

image.png

  1. 依赖管理:可以快捷的管理jar包,
  2. 统一项目结构:使得同一个java项目,可以在不同的平台迁移,

image.png

  1. 项目构建:

image.png


概述:

Maven坐标

  • 什么是坐标?
    • Maven中的坐标是资源的唯一标识,通过改坐标可以唯一定位资源位置
    • 可以使用坐标来定义项目或引入项目中所需要的依赖
  • 坐标组成
    • groupld:定义当前Maven项自隶属组织名称
    • artifactld:定义当前Maven项目名称(通常是模块)
    • version:定义当前项自版本号

image.png
image.png

Maven模型

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

1). 构建生命周期/阶段(Build lifecycle & phases)
image.png
以上图中紫色框起来的部分,就是用来完成标准化构建流程 。当我们需要编译,Maven提供了一个编译插件供我们使用;当我们需要打包,Maven就提供了一个打包插件供我们使用等。

2). 项目对象模型 (Project Object Model)
image.png
以上图中紫色框起来的部分属于项目对象模型,就是将我们自己的项目抽象成一个对象模型,有自己专属的坐标,如下图所示是一个Maven项目:
image.png
这里还未添加依赖,
添加后如图:

3). 依赖管理模型(Dependency)
image.png
以上图中紫色框起来的部分属于依赖管理模型,是使用坐标来描述当前项目依赖哪些第三方jar包:
如图:
在这里插入图片描述

之前我们项目中需要jar包时,直接就把jar包复制到项目下的lib目录,而现在书写在pom.xml文件中的坐标又是怎么能找到所要的jar包文件的呢?
Maven有一个仓库,专门存放jar包,不需手动导入了


Maven仓库

仓库:用于存储资源,管理各种jar包
仓库分类:
本地仓库:自己计算机上的一个目录
中央仓库:由Maven团队维护的全球唯一的。仓库地址:仓库 Maven仓库
远程仓库(私服):一般由公司团队搭建的私有仓库
image.png
当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包

  • 如果有,则在项目直接引用
  • 如果没有,则去中央仓库中下载对应的jar包到本地仓库

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

IDEA集成Maven

  • 配置Maven环境
  • 创建Maven项目
  • 导入Maven项目

见资料,

依赖管理:

依赖配置

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

  1. 在pom.xml 中编写标签
  2. 在标签中使用引入坐标
  3. 定义坐标的grould,artifactId,version
  4. 点击刷新按纽,引入最新加入的坐标

image.png
配置完记得刷新一下
image.png
如果引入的依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖
如果不知道依赖的坐标信息,可以到Maven仓库中搜索。

依赖传递

早期我们没有使用maven时,向项目中添加依赖的jar包,需要把当前jar包的依赖都复制到项目工程下。非常麻烦
但是有了maven,它有依赖传递的特性:

  • 依赖具有传递性
    • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
    • 简洁依赖:被依赖的资源如果依赖其他资源,则当前项目间接依赖其他资源
    • Snipaste_2024-02-27_13-09-54.png

排除依赖:

排除依赖指主动断开依赖的资源,被排除的找资源无序指定版本
Snipaste_2024-02-27_13-08-40.png
排除后:
Snipaste_2024-02-27_13-09-00.png

依赖范围

依赖的jar包,默认情况下,可以下任何地方使用。可以使用…设置其作用范围
作用范围的分类:

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

scope值:
image.png
compile:
image.png
Snipaste_2024-02-27_13-34-34.png
main中:可调用jar包中的内容
Snipaste_2024-02-27_13-34-54.png
Test中:可调用jar包中的内容
Snipaste_2024-02-27_13-35-46.png
Test:只能在测试程序范围有效
image.png
其他范围一样…

生命周期

Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一。
Maven中有三套相互独立的生命周期:

  • clearn:清理工作
  • default:核心工作,如:编译、测试、打包、安排、部署等。
  • site:生成报告、发布战点等。

image.png
重点掌握:
image.pngimage.png

test测试时我们依赖junit来测试

在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行。
如执行install时也会执行compile、test…

执行生命周期:

方式一:在idea中右侧的maven工具栏,选择
方式二:通过命令行执行

演示:
compile
image-20221201163711835.png

test:
image-20221201164627403.png
package
image-20221201165801341.png

install
image-20221201170830837.png
clean:
image-20221201171529382.png

方式二:
进入模块
image.png
打开cmd
image.png
package:
image.png
但是有报错问题
![57KaTeX parse error: Expected 'EOF', got '}' at position 8: GZC0W95}̲Y[0N]R)]E3G.png](https://img-blog.csdnimg.cn/img_convert/49a41c6e87a7be8309a0c11a2ef9750b.png)
之前导入的maven模块,也无法执行生命周期,考虑是groupId的问题
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1483678.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode42. 接雨水 -hot100

题目&#xff1a; 代码(首刷自解 2024年3月2日 有3个案例超时&#xff09;&#xff1a; 不算完全做出来&#xff0c;看了答案了&#xff0c;等以后二刷吧 class Solution { public:int helper(const vector<int>& height,const int high) {for(int i 0; i < hei…

对单元测试的思考(稳定性建设)

单测是很常见的技术的名词&#xff0c;但背后的逻辑和原理你是否清楚&#xff0c;让我们一起review一下。 1. 单测是什么&#xff1f;&#x1f914; 单测是单元测试,主要是测试一个最小逻辑块。比如一个函数、一个react、vue 组件。 2.为什么要写单测&#xff1f;&#x1f9…

扩展学习|大数据分析的现状和分类

文献来源&#xff1a;[1] Mohamed A , Najafabadi M K , Wah Y B ,et al.The state of the art and taxonomy of big data analytics: view from new big data framework[J].Artificial Intelligence Review: An International Science and Engineering Journal, 2020(2):53. 下…

windows系统下安装RabbitMQ

一、RabbitMQ安装软件资源准备 因为RabbitMQ是Erlang语言开发的&#xff0c;因此安装Erlang环境在进行安装RbbitMQ的操作&#xff0c;选择两者版本时一定要参考版本的兼容性 1.RabbitMQ国内下载地址&#xff0c;因官网下载比较缓慢&#xff0c;还是国内的稍微快些 https://r…

CTFHUB--文件包含漏洞--RCE

文件包含漏洞 文件包含漏洞也是一种注入型漏洞&#xff0c;其本质就是输入一段用户能够控制的脚本或者代码&#xff0c;并让服务端执行。有时候由于网站功能需求&#xff0c;会让前端用户选择要包含的文件&#xff0c;而开发人员又没有对要包含的文件进行安全考虑&#xff0c;…

Linux yum安装pgsql出现Bad GPG signature错误

官方文档&#xff1a;https://www.postgresql.org/download/linux/redhat/ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo yum install -y postgresql12-server sudo /usr/pgsql-12/bin/…

Angular 由一个bug说起之四:jsonEditor使用不当造成的bug

一&#xff1a;问题 项目中使用了一个JSON第三方库&#xff1a; GitHub - josdejong/jsoneditor: A web-based tool to view, edit, format, and validate JSON 当用户编辑JSON格式的数据&#xff0c;查找替换时&#xff1a; 用户的期望结果是&#xff1a;$$ 被替换为$$_text&a…

使用 Azure 部署静态网页

Author&#xff1a;AXYZdong 硕士在读 工科男 有一点思考&#xff0c;有一点想法&#xff0c;有一点理性&#xff01; 定个小小目标&#xff0c;努力成为习惯&#xff01;在最美的年华遇见更好的自己&#xff01; CSDNAXYZdong&#xff0c;CSDN首发&#xff0c;AXYZdong原创 唯…

ROS开发基础-Linux基础第四部(开发板设置本地IP)

一 、网线连接设备 使用网线连接jetson NX与机械臂&#xff0c;如下图所示&#xff1a; 二、 修改上位机IPV4 IP ①测试是否可连接。网线连接机械臂之后&#xff0c;在桌面打开终端输入命令“ping 192.168.1.18”,如不可正常通信&#xff0c;可按照下述步骤进行设置。 ②在U…

React富文本编辑器开发(一)

这是一个系统的完整的教程&#xff0c;每一节文章的内容都很重要。这个教程学完后自己可以开发出一个相当完美的富文本编辑器了。下面就开始我们今天的内容&#xff1a; 安装 是的&#xff0c;我们的开发是基于Slate的开发基础&#xff0c;所以要安装它&#xff1a; yarn ad…

Go 互斥锁的实现原理?

Go sync包提供了两种锁类型&#xff1a;互斥锁sync.Mutex 和 读写互斥锁sync.RWMutex&#xff0c;都属于悲观锁。 概念 Mutex是互斥锁&#xff0c;当一个 goroutine 获得了锁后&#xff0c;其他 goroutine 不能获取锁&#xff08;只能存在一个写者或读者&#xff0c;不能同时…

Neural Network Diffusion论文解读

详细解读&#xff1a;扩散模型生成神经网络参数&#xff0c;速度快了44倍&#xff1a;Neural Network Diffusion论文解读 摘要&#xff1a; 扩散模型在图像和视频生成方面取得了显著的成功。在这项工作中&#xff0c;我们证明了扩散模型也可以生成高性能的神经网络参数。我们…

程序员的金三银四求职宝典!

目录 ​编辑 程序员的金三银四求职宝典 一、为什么金三银四是程序员求职的黄金时期&#xff1f; 二、如何准备金三银四求职&#xff1f; 1. 完善简历 2. 增强技术能力 3. 提前考虑目标公司 4. 提前准备面试 三、程序员求职的常见面试题 1. 数据结构和算法 2. 数据库 …

在原有pytorch环境下安装DGL库和其对应的CUDA【自用】

前段时间看到一篇AAAI2024的论文Patch-wise Graph Contrastive Learning for Image Translation&#xff0c;它采用GNN的思想来进行image-to-image translation的任务&#xff0c;非常的新颖&#xff0c;但我进行复现的时候&#xff0c;发现直接下载它里面需要的DGL库是无法运行…

旧的Spring Security OAuth已停止维护,全面拥抱新解决方案Spring SAS

Spring Authorization Server 替换 Shiro 指引 背景 Spring 团队正式宣布 Spring Security OAuth 停止维护&#xff0c;该项目将不会再进行任何的迭代 目前 Spring 生态中的 OAuth2 授权服务器是 Spring Authorization Server 已经可以正式生产使用作为 SpringBoot 3.0 的最新…

C#中什么是非托管代码?托管代码和非托管代码有什么区别

在C#中&#xff0c;托管代码和非托管代码是两种不同类型的代码&#xff0c;它们在内存管理和执行环境上有所不同。 托管代码&#xff08;Managed Code&#xff09;&#xff1a; 托管代码是由.NET运行时&#xff08;CLR&#xff0c;Common Language Runtime&#xff09;管理和执…

Neo4j学习笔记2:使用Neo4j-admin import快速初始化导入数据

上一篇提到过小规模数据如何新增到数据库&#xff0c;但是一旦数据开始变多&#xff0c;效率就不够看了 同样的数据&#xff0c;使用上一篇的方法&#xff0c;预计要26天&#xff0c;但是使用Neo4j-admin import只要1分钟 参考文档在这里 文件处理 具体的导入csv文件结构可以…

没有经验的新手小白能做抖音小店无货源吗?

大家好&#xff0c;我是电商花花。 一个没有电商经验&#xff0c;没有货源的新手能做抖音小店吗&#xff1f; 这应该是很多想做抖音小店的一个疑虑吧&#xff0c;想做又担心做不好。 今天花花说一下关于我个人对抖音小店无货源的一些小见解吧&#xff0c;希望能给到你建议。 …

为什么网站页面没有被百度搜索收录?是网站被攻击了?

例如&#xff0c;为什么网站页面没有被百度搜索收录&#xff1f; 网站是否受到攻击&#xff1f; 网站索引量和网站流量之间有关系吗&#xff1f; 您在运行网站或小程序时是否有过这样的疑问&#xff1f; 下面我将为大家详细解答这些问题。 1.PC/H5站点相关 1、为什么新网站页面…

【真机Bug】异步加载资源未完成访问单例导致资源创建失败

1.错误表现描述 抽卡时&#xff0c;10抽展示界面为A。抽取内容可能是整卡或者碎片&#xff0c;抽到整卡&#xff0c;会有立绘展示和点击详情的按钮。点击详情后出现详情页B。【此时界面A预制体被销毁&#xff0c;卡片数据进入数据缓存池】点击页面B的返回按钮&#xff0c;单例…