依赖管理

依赖管理解决的问题

我们学完一个语言的语法之后,我们应该都能知道函数的引用或者类的创建等了。为了方便管理,我们就会把一些特定的功能实现写在一个代码文件中,我们只需要使用的时候导入就行了,这样无论是修改还是阅读都更加的方便简洁,但这样会出来一个问题,一旦我们多个文件你引用我,我引用你,就会出现蜈蚣一般的嵌套(比如A引用B,B引用C),这样我们迁移或者打包的整个项目的时候就会很复杂,整个引用宛如迷宫一般,人工来管理就会很麻烦。这个时候Maven就能解决这个问题

Maven的作用

当我们声明了A的依赖的时候,Maven会自己判断这个模块和其他被引用的模块是否还有其他的依赖,如果有,就会自动导入其他的依赖,不用我们去判断是否有其他的依赖了。那我们怎么声明呢,就是在pom.xml​这文件里面

pom.xml

pom.xml​这个文件很有用,是项目的maven的配置文件,我们来仔细看看这个文件

<project ...>

	<modelVersion>4.0.0</modelVersion>
<groupId>com.itranswarp.learnjava</groupId>
<artifactId>hello</artifactId>
<version>1.0</version>
<packaging>jar</packaging> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>17</maven.compiler.release>
</properties> <dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.16</version>
</dependency>
</dependencies> </project>

我们来梳理一下整文件的结构:

我们可以分为几个大块

<project ...>

  • pom.xml​ 的根元素,包含了所有项目的配置信息。
  • 定义了命名空间和模式,确保文件遵循 Maven POM 规范。
<project ...>

	所有项目的配置信息。

</project>

整个项目自己的信息

<modelVersion>4.0.0</modelVersion>
<groupId>com.itranswarp.learnjava</groupId>
<artifactId>hello</artifactId>
<version>1.0</version>
<packaging>jar</packaging>

这些都是你管理项目的信息

一个Maven工程就是由groupId​,artifactId​和version​作为唯一标识。

<modelVersion>

  • 定义 POM 文件的模型版本,目前通常为 4.0.0​。

<groupId>

  • 表示项目的组 ID,通常是项目所属组织的反向域名(如 com.example​)。
  • 必须唯一,通常用来标识公司或组织。

<artifactId>

  • 项目的唯一标识符,表示模块或项目的名称(如 my-app​)。
  • artifactId​ 应该在同一 groupId​ 下是唯一的。

<version>

  • 定义项目的版本号(如 1.0.0​)。
  • 如果是开发版本,可以使用 -SNAPSHOT​ 标识(如 1.0.0-SNAPSHOT​),表示不稳定版本。

<packaging>

  • 指定项目的打包方式,默认为 jar​。
  • 其他常见值有 war​(Web 应用)、pom​(父项目)等。

<properties..>

这个标签里面是统一管理版本号、编码等配置。

  • project.build.sourceEncoding​:表示项目源码的字符编码,通常应设定为UTF-8​;
  • maven.compiler.release​:表示使用的JDK版本,例如21​;
  • maven.compiler.source​:表示Java编译器读取的源码版本;
  • maven.compiler.target​:表示Java编译器编译的Class版本。
	<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>17</maven.compiler.release>
</properties>
值得注意的是

从Java 9开始,推荐使用maven.compiler.release​属性,保证编译时输入的源码和编译输出版本一致。如果源码和输出版本不同,则应该分别设置maven.compiler.source​和maven.compiler.target​。

通过<properties>​定义的属性,就可以固定JDK版本,防止同一个项目的不同的开发者各自使用不同版本的JDK。

<dependencies..>

这里面就是整个项目所需的依赖

  • 定义项目的依赖项,每个依赖项用 <dependency>​ 标签表示。

    	<dependencies>
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>2.0.16</version>
    </dependency>
    </dependencies>
  • 关键字元素:

    • <groupId>​:依赖的组 ID。
    • <artifactId>​:依赖的 artifact ID。
    • <version>​:依赖的版本号。

我们在引用其他第三方库的时候,只需要通过这3个变量确定。例如,依赖org.slfj4:slf4j-simple:2.0.16​:这个依赖是我们可以直接在线下载下来直接调用的,解析下来就是

groupId​为 org.slfj4

artifactId​ 为slf4j-simple

version​ 为 2.0.16

一般我们在表示Maven依赖时,使用简写形式groupId:artifactId:version

这个时候回去看pom.xml​我们就发现整个结构已经非常清晰了,就是各种配置的结合体

xml

既然提到了,那我们就顺便介绍一遍xml这个格式吧,通过上面的例子我们能看出xml是非常像html的语法的,但是xml有着很高的自由度,因为xml的本意就是靠着这样的层级信息去表达主题各式各样的信息

这样的表示优点就是非常的结构化,结构化对于整个计算机的信息表示无疑是非常契合和高效的

xml的表示既非常地公式化,使用<>​来将这个盒子命名就行,里面随便输入信息就行,因为xml的功能就像文章一样,只是用来看的。也非常的灵活,每个<>​都可以进行嵌套

Maven的顶级功能——依赖管理的更多相关文章

  1. Maven多模块项目依赖管理

    Maven多模块项目依赖管理及dependencies与dependencyManagement的区别 转自:http://blog.csdn.net/liutengteng130/article/d ...

  2. 实用maven笔记二-信息&依赖管理

    目前我经历的公司的主要项目管理工具都是maven,maven除了是一个实用的构建工具外,也是一个功能强大的项目管理工具.其管理功能分为信息管理和依赖管理.通过pom.xml文件实现. 信息管理 信息管 ...

  3. maven学习记录二——依赖管理

    5       依赖管理 Jar包的管理 需求:整合struts2   页面上传一个客户id 跳转页面 5.1     添加依赖: 打开maven仓库的视图: 5.2     重建索引 1.  创建m ...

  4. maven——项目构建和依赖管理工具

    apache maven是一个用于项目构建和依赖管理的工具. 添加archetype https://repo1.maven.org/maven2/archetype-catalog.xml 更改本地 ...

  5. 【maven】插件和依赖管理

    1.插件管理 定义 pluginManagement 用来做插件管理的.它是表示插件声明,即你在项目中的pluginManagement下声明了插件,Maven不会加载该插件,pluginManage ...

  6. 使用maven-pom进行依赖管理与自动构建

    使用maven-pom进行依赖管理与自动构建 span.kw { color: #007020; font-weight: bold; } /* Keyword */ code > span.d ...

  7. 4.Maven概念模型,maven的生命周期,Maven坐标,依赖管理(依赖范围,依赖声明),仓库管理,私服概念

     1 maven概念模型 2 maven的生命周期,项目构建过程 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg== ...

  8. Spring Security 3.2.x与Spring 4.0.x的Maven依赖管理

    原文链接: Spring Security with Maven原文日期: 2013年04月24日翻译日期: 2014年06月29日翻译人员: 铁锚 1. 概述 本文通过实例为您介绍怎样使用 Mave ...

  9. Maven(六)之依赖管理

    前面讲了maven一些关于Maven的简单知识,今天我给大家分享一些Maven的依赖管理.我相信用过maven的人都知道,它很重要的功能就是通过依赖来添加jar包. 让我们领略一下Maven是怎么管理 ...

  10. 从初识Maven到使用Maven进行依赖管理和项目构建

    前些天就安装了Maven,以备自己以后整合项目用,尤其是我们的ssh,ssm项目.想必好多人在开始的时候并不清楚Maven是什么,它能够帮助我们干什么. 所以在学习Maven之前我们一定要知道它是什么 ...

随机推荐

  1. java判断文本文件编码格式

    上篇文章需要读取当前java或者配置文件的编码格式,这里主要支持UTF-8.GBK.UTF-16.Unicode等 /** * 判断文件的编码格式 * @param fileName :file * ...

  2. RabbitMQ 基础概念与架构设计及工作机制学习总结

    什么是RabbitMQ MQ全称为Message Queue,即消息队列. 它也是一个队列,遵循FIFO原则 .RabbitMQ则是一个开源的消息中间件,由erlang语言开发,基于AMQP协议实现的 ...

  3. 聊一聊SQL优化

    晚上睡不着,脑子里总想着一些问题,试着写一写对于SQL查询优化的见解. 首先,数据库有自己的查询优化器,执行一条查询SQL优化器会选择最优的方式(不走索引.走索引.走哪个索引), 所以索引不是越多越好 ...

  4. MySQL的索引原理及使用

    MySQL中的索引模型 Mysql中的索引使用的数据结构一般为搜索树,这里的搜索树,一般使用B树,这里补一下数据结构中的B树结构:说B树之前,先顺一个前置的知识点,平衡二叉树: 平衡二叉树 二叉树应该 ...

  5. 【工具分享】红队重点资产指纹识别 -- P1finger -0.02(最新版本)

    工具介绍: P1finger 红队行动下的重点资产指纹识别工具.P1finger 是一个重点资产指纹识别的工具,旨在通过HTTP请求特征来识别目标系统.其主要特点包括: 语言和实现: 语言:使用Go语 ...

  6. c++字符编码转换

    c++字符编码转换 简述 字符编码一直是软件开发中很麻烦的问题.当前项目开发普遍使用的字符集是utf-8,而windows系统则默认是gbk,linux默认编码则是utf-8,所以想要开发一个在win ...

  7. VS2022 17.12.0 Preview2版本对Copilot的功能增强

    前提条件,使用最新版的17.12.0 Preview2,并且有有效的Copilot AI订阅,那么可以体验这个新鲜好用的功能 增强了Copilot AI对IEnumerable Visualizer的 ...

  8. JavaScript之Blob对象基本用法及分片上传示例

    Blob基本用法 创建 通过Blob的构造函数创建Blob对象: new Blob(blobParts[, options]) blobParts: 数组类型, 数组中的每一项连接起来构成Blob对象 ...

  9. SimMTM: 用于掩码时间序列建模的简单预训练框架《SimMTM: A Simple Pre-Training Framework for Masked Time-Series Modeling》(预训练模型、时序表征学习、掩码建模、流行学习、近邻聚合、低级表示学习(掩码)、高级表示学习(对比)、segment-wise 和point- wise)

    今天是2024年7月3日10:15,写一篇1月7日就看过的论文,哈哈哈哈哈哈哈哈哈,突然想到这篇论文了. 论文:SimMTM: A Simple Pre-Training Framework for ...

  10. RxJS 系列 – Mathematical and Aggregate Operators

    前言 前几篇介绍过了 Creation Operators Filtering Operators Join Creation Operators Error Handling Operators T ...