Maven的顶级功能——依赖管理
依赖管理依赖管理解决的问题
我们学完一个语言的语法之后,我们应该都能知道函数的引用或者类的创建等了。为了方便管理,我们就会把一些特定的功能实现写在一个代码文件中,我们只需要利用的时候导入就行了,这样无论是修改还是阅读都更加的方便简便,但这样会出来一个问题,一旦我们多个文件你引用我,我引用你,就会出现蜈蚣一样平常的嵌套(好比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>我们来梳理一下整文件的结构:
我们可以分为几个大块
[*]是 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作为唯一标识。
[*]定义 POM 文件的模型版本,现在通常为 4.0.0。
[*]表现项目标组 ID,通常是项目所属组织的反向域名(如 com.example)。
[*]必须唯一,通常用来标识公司或组织。
[*]项目标唯一标识符,表现模块或项目标名称(如 my-app)。
[*]artifactId 应该在同一 groupId 下是唯一的。
[*]定义项目标版本号(如 1.0.0)。
[*]假如是开发版本,可以利用 -SNAPSHOT 标识(如 1.0.0-SNAPSHOT),表现不稳定版本。
[*]指定项目标打包方式,默认为 jar。
[*]其他常见值有 war(Web 应用)、pom(父项目)等。
这个标签里面是统一管理版本号、编码等配置。
[*]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。
通过定义的属性,就可以固定JDK版本,防止同一个项目标不同的开发者各自利用不同版本的JDK。
这里面就是整个项目所需的依赖
[*]定义项目标依赖项,每个依赖项用 标签表现。
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.16</version>
</dependency>
</dependencies>
[*]关键字元素:
[*]:依赖的组 ID。
[*]:依赖的 artifact ID。
[*]:依赖的版本号。
我们在引用其他第三方库的时候,只需要通过这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的功能就像文章一样,只是用来看的。也非常的灵活,每个都可以举行嵌套
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]