初识Maven

介绍:

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.hqwc.cn/news/496207.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用Logstash搜集日志传输到es集群并使用kibana检测

引言:上一期我们进行了对Elasticsearch和kibana的部署,今天我们来解决如何使用Logstash搜集日志传输到es集群并使用kibana检测 目录 Logstash部署 1.安装配置Logstash (1)安装 (2)测试文件 &#xff…

智能化运维是新行业吗为什么

智能运维产品线和服务线包括一系列自动化、智能化的技术和服务,为进一步提高IT运维的效率和有效性。智能运维(AIOps)利用大数据、分析技术和机器学习能力自动执行和简化业务流程,包括收集和总结多源IT系统架构组件的数据、业务需求…

流模型 Flow 超详解,基于 Flow 的生成式模型,从思路到基础到公式推导到模型理解与应用(Flow-based Generative Model)

参考文献: [1] Dinh L, Krueger D, Bengio Y. Nice: Non-linear independent components estimation[J]. arXiv preprint arXiv:1410.8516, 2014. [2] Dinh L, Sohl-Dickstein J, Bengio S. Density estimation using real nvp[J]. arXiv preprint arXiv:1605.08803…

express+mysql+vue,从零搭建一个商城管理系统3--user路由模块

提示:学习express,搭建管理系统 文章目录 前言一、新建routes文件夹二、新建routes/index.js和routes/user.js三、修改index.js四、修改routes/index.js五、修改routes/user.js六、启动项目预览总结 前言 需求:主要学习express,所…

必看——HTTP怎么升级成HTTPS

将HTTP升级为HTTPS主要涉及获取SSL/TLS证书并在您的服务器上配置它。这个过程可以增强网站的安全性,通过加密客户端和服务器之间的通信来保护数据。下面是一个基本的步骤指南: 1.购买SSL/TLS证书:您可以从许多证书颁发机构(CA&…

Java Web(八)--Servlet(二)

Servlet API Servlet API 包含以下4个Java包: 1. javax.servlet:其中包含定义Servlet和Servlet容器之间契约的类和接口。 2. javax.servlet.http:主要定义了与HTTP协议相关的HttpServlet类,HttpServletRequest接口和HttpServl…

Ubuntu Mysql Innodb cluster集群搭建+MaxScale负载均衡(读写分离)

Ubuntu系统版本 20.04.3 LTS (Focal Fossa) 、64位系统。 cat /etc/os-release查看Ubuntu系统是32位还是64位 uname -m如果显示“i686”,则表示安装了32位操作系统。如果显示“x86_64”,则表示安装了64位操作系统。 一、安装MySql 参考: https://blog.csdn.net/qq_3712…

当Web3叙事寒冬到来,游戏是否是冬日里的“一把火”?

出品|欧科云链研究院 作者|Jason Jiang 以太坊创始人Vitalik在2019年曾说:金融与游戏会是区块链最先落地的场景。 在DeFi金融创新驱动上个周期后,沉寂近两年的Web3游戏板块,如今似乎也在复苏。无论是频繁获得融资&a…

分享three.js和cannon.js构建Web 3D场景

使用 three.js,您不再需要花哨的游戏PC或控制台来显示逼真的3D图形。 您甚至不需要下载特殊的应用程序。现在每个人都可以使用智能手机和网络浏览器体验令人惊叹的3D应用程序。 这个惊人的库和充满活力的社区是您在浏览器、笔记本电脑、平板电脑或智能手机上创建游…

PHP+vue+mysql高校学生健康管理系统fe93x

。高校学生健康管理平台采用系统设计遵循界面层、业务逻辑层和数据访问层的Web开发三层架构。采用B/S结构,使得系统更加容易维护。高校学生健康 管理平台主要实现角色有管理员和学生,医护人员,辅导员,管理员在后台管理诊断结果模块、医护咨询模块、医护人员模块、医护回复模块、…

WPF 【十月的寒流】学习笔记(3):DataGrid分页

文章目录 前言相关链接代码仓库项目配置(省略)项目初始配置xamlviewModel Filter过滤详细代码展示结果问题 Linq过滤CollectionDataxamlviewModel sql,这里用到数据库,就不展开了 总结 前言 我们这次详细了解一下列表通知的底层是…

团结引擎——DotNet Wasm方案

参考:团结引擎 DotNet WebAssembly(Wasm) 介绍 一、当前编译流程 通过IL2CPP将C#转成C/C;通过Emscripen将C/C转成WebAssembly; 二、 当前存在问题 IL2CPP在处理类似泛型、反射结构时,由于缺少运行时信息,必须全量生…