【Spring】1. Maven项目管理

news2024/10/7 9:19:07

封面

📚博客主页:爱敲代码的小杨.

✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》

❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️

🙏小杨水平有限,欢迎各位大佬指点,相互学习进步!


小杨近些在学习人工智能方面的知识,发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

文章目录

  • 1. 什么是 Maven
  • 2. 创建 Maven 项目
  • 3. Maven 的作用
    • 3.1 统一项目结构
    • 3.2 项目构建
    • 3.3 依赖管理
      • 依赖配置
      • 依赖传递
      • 依赖排除
  • 4. Maven 仓库
    • 4.1 本地仓库
    • 4.2 中央仓库
      • 查找 jar 包的地址
    • 4.3 私有服务器,也称私服
    • 4.4 Maven 设置国内源

1. 什么是 Maven

官方描述:

Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.
翻译:Apache Maven是一个软件项目管理和理解工具。基于项目对象模型(POM)的概念,Maven可以从一个中心信息片段管理项目的构建、报告和文档

Maven 是⼀个项目管理工具, 通过 pom.xml文件的配置获取 jar包,而不用手动去添加 jar包。

前面学习 JDBC 的时候,就需要手动的去添加 jar包,学习了 Maven 就不用去手动添加 jar包了,只需要添加几行代码就可以添加 jar包了。
image.png

🚩:为什么要学习 Maven?

简单, 方便, 提高我们的开发效率, 减少我们的开发Bug.

2. 创建 Maven 项目

IDEA 本身已经集成了 Maven , 我们可以直接是用, 无需安装

  1. File -> New -> Project

image.png

  1. 填写项目名、存放位置、创建方式选择 Maven、选择JDK版本

image.png

  1. 点击Create,就创建好了 Maven 项目

image.png

3. Maven 的作用

3.1 统一项目结构

统一项目结构:提供标准、统一的项目结构
任何编译器创建 Maven 项目,其项目的结构都是一样的
image.png

3.2 项目构建

Maven 提供了标准的,跨平台(Linux, Windows, MacOS等)的自动化项目构建方式
当我们开发了⼀个项目之后, 代码需要经过编译, 测试, 打包, 发布等流程, 每次代码的修改, 都需要经过这些流程, 如果代码反复调试修改, 这个流程就需要反复进行, 就显得特别麻烦, 而 Maven 给我们提供了⼀套简单的命令来完成项目的构建
image.png
比如:是用package命令就可以对项目进行打包操作
image.png
打包就是把所有的 class文件, 全部放在一起, 打成 jar 包或者 war

jar包和war包都是⼀种压缩文件

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

3.3 依赖管理

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

pom.xml就是 Maven 的配置文件,用来描述项目的各种信息

依赖配置

依赖:只当前项目运行的所需要的 jar
比如:学习 JDBC 的时候,我们需要手动下载mysql-connector-java-5.1.47的包,并添加到项目中
image.png
如果是用 Maven, 我们只需要在pom.xml中引入mysql-connector-java的依赖就可以了

<dependencies>
  <!--放置项目需要的依赖坐标,可以多个-->
</dependencies>
  1. pom.xml文件中<dependencies>标签内,添加依赖坐标
<dependencies>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
  </dependency>
</dependencies>
  1. 点击刷新按钮, 引入新加入的依赖jar

后续有添加新的jar包, 或者修改jar包版本, 都需要通过该方式在项目中添加依赖.

image.png

  1. 刷新完之后, 就可以在项目中看到新加入的jar

image.png

依赖传递

早期我们没有是用 maven时, 向项目中添加依赖的jar包,需要把所有的jar包都复制到项目工程下.
比如 A 依赖 B, B依赖C, 那么 A项目引入 B 的同时, 也需要引入C, 如果我们手动管理这个依赖, 这个过程就会比较麻烦, 我们需要知道每个库都依赖哪些库, 以及这些依赖之间的版本是如何关联的?
但是用 maven 的话, 就可以避免管理所需依赖的关系。我们只需要在pom.xml文件中, 定义直接依赖就可以了, 由于 maven 的依赖具有传递性,所以会自动把所依赖的其他jar包也⼀起导入
image.png
如上图, 项目A 通过Maven 引入 Jar A 时, 会自动引入 Jar BJar C.
Jar A 和 项目B就是项目 A的直接依赖.
Jar B, Jar C是间接依赖.

  1. 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  2. 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

依赖排除

  • 排除依赖指主动断开依赖的资源,被排除的资源无需指定版本。
<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>

4. Maven 仓库

通过几行代码就可以把需要的 jar包放进项目中,是如何做到的呢?

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

这个代码, 我们称之为 “坐标”, 也就是唯一的.
在 Maven中,根据groupIdartifactIdversion的配置,来唯一识别一个 jar包,缺一不可。
当我们在pom.xml文件中配置完依赖之后, 点击刷新, Maven会根据坐标的配置, 去仓库里寻找 jar包, 并把他下载下来, 添加到项目中. 这个jar包下载的地方就称为仓库.
仓库:用于存储资源,管理各种jar
image.png
Maven仓库的本质就是⼀个目录(文件夹),这个目录被用来存储开发中所有依赖(jar包, 插件等).
image.png
Maven仓库分为两大类: 本地仓库和远程仓库. 其中远程仓库又分为中央仓库, 私服 和其他公共库

4.1 本地仓库

本地仓库: 自己计算机上的一个目录(用来存储jar包)
当项目中引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar

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

image.png
idea配置 Maven
file->Settings->Maven
image.png
查看该仓库目录 可以看到该目录下有很多的jar(最开始是空的, 随着Maven的使用, 该仓库下文件会越来越多)
image.png

4.2 中央仓库

中央仓库: maven 软件中内置⼀个远程仓库地址,就是中央仓库,服务于整个互联网. 由 Maven 团队维护,全球唯一.
仓库地址:网址
可以通过https://mvnrepository.com 这个网址来查询并下载jar

查找 jar 包的地址

  1. 访问 https://mvnrepository.com
  2. 进行查找,比如 mysql

image.png

  1. 选择添加的 jar

image.png

  1. 查看 jar包坐标

image.png

4.3 私有服务器,也称私服

私服:一般由公司搭建的私有仓库。
私服属于某个公司,或者某个部门 往往需要⼀定权限.
有了私服之后, Maven依赖下载的顺序又发生了变化
image.png
当Maven需要下载资源的时候

  1. 先从本地仓库获取, 本地仓库存在, 则直接返回
  2. 如果本地仓库没有, 就从私服请求, 私服存在该资源, 就直接返回
  3. 如果私服上不存在该资源,则从中央仓库下载, 中央仓库不存在, 就报错了…
  4. 如果中央仓库中存在, 就先缓存在私服上之后,再缓存到本地仓库⾥, 再为Maven的下载请求提供服务

4.4 Maven 设置国内源

因为中央仓库在国外, 所以下载起来会⽐较慢, 所以咱们选择借助国内⼀些公开的远程仓库来下载资源
如何设置国内源
File->Settings
image.png

  1. 查看配置文件的地址, 如上图所示, Maven配置文件地址为:‪C:\APP\Java\apache-maven-3.6.1\conf\settings.xml

不同电脑设置的Maven路径不同
settingsrepository 可以修改设置为其他路径, 两个路径不要有中⽂

  1. 配置国内源

Maven 仓库默认是在国外官网, 国内使用时会比较慢,我们可以更换为阿里云的仓库
打开settings.xml, 在 mirrors 节点上,添加内容如下:

<mirror>
  <id>aliyunmaven</id>
  <mirrorOf>central</mirrorOf>
  <name>阿⾥云公共仓库</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

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

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

相关文章

centos7 离线安装zip和unzip

解压的时候发现不能解压,报-bash: unzip: command not found 1、访问https://www.rpmfind.net/linux/rpm2html/search.php?query=zip&submit=Search+…&system=centos&arch=#/ 2、输入zip和centos搜索,选择el7下载 3、输入unzip和centos搜索,选择el7下载: 安…

【LLM之RAG】RAT论文阅读笔记

研究背景 近年来&#xff0c;大型语言模型&#xff08;LLMs&#xff09;在各种自然语言推理任务上取得了显著进展&#xff0c;尤其是在结合大规模模型和复杂提示策略&#xff08;如链式思维提示&#xff08;CoT&#xff09;&#xff09;时。然而&#xff0c;LLMs 在推理的事实…

小程序简单版音乐播放器

小程序简单版音乐播放器 结构 先来看看页面结构 <!-- wxml --><!-- 标签页标题 --> <view class"tab"><view class"tab-item {{tab0?active:}}" bindtap"changeItem" data-item"0">音乐推荐</view><…

DAY5-力扣刷题

1.两两交换链表中的节点 24. 两两交换链表中的节点 - 力扣&#xff08;LeetCode&#xff09; 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换…

ElasticSearch + kibana:类型声明

当我们使用 kibana 创建索引时&#xff0c;如果不申明数据类型&#xff0c;默认字符串赋予 text类型&#xff0c;如下图所示 接下来我们继续创建多条数据如下&#xff1a; 下面我们来检索下&#xff1a; 通过以上两个案例我们发现&#xff0c;使用 match 模糊查询 li-3 明明…

亚马逊、速卖通等跨境平台测评自养号有哪些好处?

测评自养号顾名思义就是自己用国外真实环境养出来的买家账号&#xff0c;通过国外的手机号、邮箱、真实收货地址&#xff0c;设备环境、当地的住宅IP注册和养出来的买手号 很多卖家都了解过自养号&#xff0c;注册一个账号成本就几块钱&#xff0c;账号又可以长期使用&#xf…

【机器学习】图神经网络:深度解析图神经网络的基本构成和原理以及关键技术

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 引言一、图数据及其应用场景1.1 图数据的定义和特征1.2 常见的图数据结构1.2.1 社交网络1.2.2 知识图谱1.2.3 分子结构1.2.4 交通网络 1.3 图数据在不同领域的应用实例1.3.1 社交网络中的推荐系统1.3.2 知识图谱中的信息检索…

如何学习创建和使用 Java 归档(JAR)文件

1. 简介 JAR&#xff08;Java ARchive&#xff09;文件是一种用于打包多个Java类、资源文件和元数据的压缩文件格式。它在Java开发和发布过程中扮演着重要角色。通过使用JAR文件&#xff0c;开发者可以将应用程序的所有组件打包在一个文件中&#xff0c;方便分发和部署。 2. …

Visual Studio Code 配置教程,手把手教你如何配置

文章目录 引言1. 安装 VS Code1.1 下载和安装1.2 初次启动 2. 基本配置2.1 设置用户和工作区配置2.2 常用配置项 3. 安装和配置扩展插件3.1 安装扩展3.2 推荐扩展3.3 配置扩展 4. 主题和配色方案4.1 安装主题4.2 切换主题4.3 自定义配色方案 5. 版本控制集成5.1 配置 Git5.2 Gi…

COMSOL导入图片建模教程

研究背景 COMSOL Multiphysics作为多物理场仿真领域的高端软件&#xff0c;可允许用户通过建立数学模型来模拟和预测现实世界中的各种物理现象。将图片导入COMSOL软件进行建模&#xff0c;根植于现代科学研究和工程设计对高效、准确模拟技术日益增长的需求&#xff0c;它允许用…

【0008day】Shiny的介绍

介绍&#xff1a;Shiny 是一个开源 R 包&#xff0c;它提供了一个优雅而强大的 Web 框架&#xff0c;用于使用 R 构建 Web 应用程序。Shiny 可以帮助您将分析转变为交互式 Web 应用程序&#xff0c;而无需 HTML、CSS 或 JavaScript 知识。 # download R package pkgtest <-…

超分辨率开源库 GitHub 热门项目分享

超分辨率(Super-Resolution)就是将低分辨率(low resolution)的图像通过算法提升到高分辨率(high resolution)的过程。 超分辨率技术在多个领域有广泛应用&#xff0c;包括但不限于以下几个方面&#xff1a; 医疗成像&#xff1a;在医学影像中&#xff0c;超分辨率技术可以帮助…

手表化身车钥匙:智慧控车,优雅随行

智能汽车时代来临&#xff0c;传统车钥匙正在逐渐被取代。HUAWEI WATCH 4 Pro及HUAWEI WATCH Ultimate系列手表配对问界M9等&#xff0c;不仅可以化身 UWB 数字车钥匙&#xff0c;无感解锁车辆&#xff0c;还可以实现智能语音控车等功能&#xff0c;让你从容出行&#xff0c;优…

美国裸机云站群服务器使用指南

在当今数字化时代&#xff0c;网站和应用程序的稳定运行对于企业和个人都至关重要。为了满足日益增长的业务需求&#xff0c;裸机云站群服务器成为了一个理想的选择。以下是美国裸机云站群服务器的使用指南&#xff0c;帮助您更好地利用这一强大的云服务。 一、选择信誉良好的云…

【javaEE-有关CPU进程和线程实现的并发编程及二者的区别】

&#x1f525;&#x1f525;&#x1f525;有关进程并发编程开发的成本问题 这次之前其实我们所有的写的程序都是使用单核心来运行的&#xff0c;但是一般我们的计算机都有很多核心&#xff0c;如果我们编程的时候&#xff0c;只使用一个核心的话&#xff0c;其实这是一个非常大…

光功率计传感器

光探测仪表: 激光功率计探头按照不同的原理和材料分为热电堆型、光电二极管型以及包含两种传感器的综合探头, 激光能量计则有热释电传感器和热电堆传感器探头 激光功率计分为三种类 型 。 第一种类型为光 电 型 , 通过将光 能转换为 电 信 号来表征所接收 的 激光功率 大小 …

2024第15届东莞国际电子智造及微电子展览会

2024第15届东莞国际电子智造及微电子展览会 The 15th Dongguan International Electronic Intelligent Manufacturing and Microelectronics Exhibition in 2024 时间&#xff1a;2024年11月18-20日 地点&#xff1a;广东现代国际展览中心 详询主办方陆先生 I38&#xff0…

排序(2)【选择排序】【快速排序】

一.选择排序 选择排序就是选择一个数组的最大的数字或者最小的数字&#xff0c;放在一整个数组的最后或者开头的位置。 1.选择排序的实现 我们可以对选择排序进行一些加强&#xff0c;普通的选择排序是选择最小的数&#xff0c;然后进行交换。这个加强之后就是我们既要选择出…

北京物业管理app开发,便民服务,智慧管理

居民的现代化生活离不开物业的支持&#xff0c;物业作为服务、保障居民生活的管理单位&#xff0c;从门禁、电梯、快递、停车等方方面面都影响着居民的日常生活。随着经济与科技的不断发展&#xff0c;居民对物业的服务也提出了新的要求。 一&#xff0e; 北京物业管理的现状 …

element--el-table合计换行显示

el-table合计换行显示 效果图实现1、使用到的参数2、代码演示 效果图 实现 1、使用到的参数 官网链接&#xff1a;element-table 将show-summary设置为true就会在表格尾部展示合计行。默认情况下&#xff0c;对于合计行&#xff0c;第一列不进行数据求合操作&#xff0c;而是…