首页 > 其他分享 >Maven的顶级功能——依赖管理

Maven的顶级功能——依赖管理

时间:2024-11-07 16:10:48浏览次数:1  
标签:xml maven 依赖 项目 顶级 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>

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

我们可以分为几个大块

<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的功能就像文章一样,只是用来看的。也非常的灵活,每个<>​都可以进行嵌套

标签:xml,maven,依赖,项目,顶级,Maven,版本
From: https://www.cnblogs.com/ENchantedN/p/18532485

相关文章

  • Maven简单介绍——必要的Java管理与构建
    概念    通常Java的项目中有很多的环境和规范的问题,比如一些需要依赖的包,整个项目的目录标准是怎么样的,什么样的文件放在哪个目录等,还有jdk版本,编译代码流程,项目版本号之类的问题。    虽然这些都是小问题,但是一旦配置起来就会很费时间,这个时候Maven就解决了这样的问题......
  • Maven简单介绍——必要的Java管理与构建
    概念    通常Java的项目中有很多的环境和规范的问题,比如一些需要依赖的包,整个项目的目录标准是怎么样的,什么样的文件放在哪个目录等,还有jdk版本,编译代码流程,项目版本号之类的问题。    虽然这些都是小问题,但是一旦配置起来就会很费时间,这个时候Maven就解决了这样的问题......
  • 一文带您了解SonarScanner的原理和使用方法(包括maven构建和命令行执行)
    SonarScanner扫描代码SonarScanner执行源代码分析。这个独立的程序在CI/CD主机上运行,并将分析结果发送到SonarQube服务器,由其计算分析结果,计算质量门并生成报告。为了执行分析,SonarScanner使用安装时从SonarQube服务器下载的语言分析器。SonarScanner和SonarQube二者的关系,通......
  • 【Spring IoC&DI】路径扫描,DI依赖注入
    【路径扫描】Spring注重路径,约定大于配置例如,这个路径下,Spring默认会去扫描下【com.baiye.ioc】下面所有类中加了五大注解的路径,不在这个路径下是默认不会去扫描的即:Spring默认的扫描路径是——启动类所在的目录及其子目录但,当启动类放到Service包中时,扫描路径就变成了......
  • helm 依赖问题处理
    在Helm中处理服务依赖顺序问题,通常涉及到在Chart文件中定义正确的依赖关系以及利用Kubernetes的特性来确保服务按顺序启动。下面是一些方法和最佳实践,可以帮助你解决服务依赖顺序问题:###1.使用`dependencies`在`Chart.yaml`中定义依赖如果你的HelmChart依赖于......
  • 模型 海勒姆法则(用户依赖你未承诺的API功能)
    系列文章分享 模型,了解更多......
  • maven知识点总结
    Maven知识总结一、简介Maven是一个项目管理和构建自动化工具。它基于项目对象模型(POM)的概念,将项目的构建、报告和文档等流程标准化。二、核心概念POM(ProjectObjectModel)是Maven的核心,以xml文件形式存在。它包含了项目的基本信息,如项目坐标(groupId、artifactId、version),......
  • Blazor 使用 npm 依赖包
    使用node包时,经常会有 importinteractjsfrom'@interactjs/interactjs';这样类似的引用;这是node的语法,非node环境都不支持这种写法。所以Blazor要用node包,需要再用js封装一层。示例项目下面是一个node项目{"name":"test","version":"1.0.0","de......
  • dotNet 整合 Microsoft.Extensions.DependencyInjection 利用反射实现依赖批量注入
    前言框架.net8.0Microsoft.Extensions.DependencyInjection8.0创建三个类库项目ConfigServicesLogServicesMailServices创建一个控制台项目ConsoleAppMailConfigServicesnamespaceConfigServices.IService{publicinterfaceIConfigService{......
  • 探索顶级外贸开发信的奥秘之处
    探索顶级外贸开发信的奥秘之处在外贸行业的激烈竞争中,一封优秀的外贸开发信往往能够成为打开合作之门的金钥匙。它不仅承载着企业的产品与服务信息,更是企业形象与实力的直接展现。那么,究竟什么样的外贸开发信才能称之为“顶级”?其背后又隐藏着哪些奥秘呢?本文将带您......