梦应逍遥 发表于 2024-11-7 14:44:15

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]
查看完整版本: Maven的顶级功能——依赖管理