这篇博客来学习和分析一下: " pom.xml " 所生成的最基本的信息。
之前的博客中讲到,学 Maven 就是学 " pom.xml " 的配置。后面也会围绕这个文件进行学习。
目录
[一、分析 pom.xml 文件](#一、分析 pom.xml 文件)
[(1)分析的 "pom.xml" 文件内容。](#(1)分析的 "pom.xml" 文件内容。)
[(3)然后以下它们三个(组合起来称 "坐标信息")](#(3)然后以下它们三个(组合起来称 "坐标信息"))
[1、" groupId "。](#1、" groupId "。)
一、分析 pom.xml 文件
(1)分析的 "pom.xml" 文件内容。
java<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.fs</groupId> <artifactId>hello</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> </project>
(2)首先是:<modelVersion>4.0.0</modelVersion>
这个可以去无视它,它是跟 Maven的版本相关,通常不会去改。
(3)然后以下它们三个(组合起来称 "坐标信息")
<groupId>com.fs</groupId>
<artifactId>hello</artifactId>
<version>1.0-SNAPSHOT</version>1、和数学一样,在一个空间有三个坐标,这三个坐标可以确定空间中的一个点。
2、在 Maven当中,同样也是由这三个标量,去确定一个 "jar 包"所在的位置。我们之前了解到 Maven 不会像本地项目一样,直接把 "jar 包"下载本地,再通过项目去绑定 "jar 包"。
3、也就是 Maven 项目想要依赖一个 "jar 包" ,就是通过上面三个。首先会去本地仓库寻找(也就是之前在 settings.xml 设置的一个自己的仓库地址),如果本地仓库没有,就会去我们配置的 " 镜像 ",去远程通过镜像地址通过网络进行下载。(阿里云->华为云->Maven 中央本地仓库,依次把需要的下载到本地仓库)
4、而我们举的这个例子的三个,这个其实是本项目的一个坐标信息。因为我们本项目这个 hello也可以打包成一个 "jar 包"。当别的 Maven 项目想要引用这个 hello的某个类,就直接通过当前这个项目的坐标信息来引用的。
5、所以每个 Maven 项目都会有一个唯一的坐标。保证能够确认到唯一的"jar 包"了。
(4)通常如何配置本工程的坐标信息?
1、" groupId "。
- 要分情况:当前的这个工程是一个项目还是一个模块?一个工程可能有时候会当成一个项目去用,而一个项目有时候会有很多个像 "hello" 这种工程的组合。
(这里会有一个 "聚合Maven项目" 的概念,也就是一个工程)
- 也就是当我们以后开发一个项目的时候,它不一定只有一个工程组成,不过当然一个工程可以当一个项目。这两种情况所配置的坐标信息不一样。
如果当前这个工程当作是一个独立的项目
那么 " groupId " 当中一个域名(然后反过来)。如 baidu.com ------> com.baidu
那么 " artifactId " :它是一个项目名:如 hello 、网盘、email 等等对应的一个名称。
然后是 " version " ,不管是项目还是模块,写法和命名方式都是一样的。
version:1.0-SNAPSHOT ,其实是指还没上线的快照版。如果是上线了就会改成另外一个词:version:1.0-REALEASE (已发布上线的意思)。然后 1.0 啥的就是版本。(运维人员或者项目管理人员处理的)简而言之:就是代表我们项目的一个版本。
如果当前这个工程只是这个项目当中的一个模块
- 举个例子: 项目 AA (a01,a02,b01) 里面有三个工程(也就是它包含三个模块)
那么 " groupId " 当中一个域名(然后反过来,再加上当前的项目名)。比如:com.baidu.AA
那么 " artifactId " :它是每一个工程(模块)的名称:如 a01 、a02、b02...等等对应的一个名称。因为三个工程就会有三个坐标它们各种的artifactId。也就对应着是叫模块名了。
上面的坐标信息是本工程的坐标信息。怎么通过一个坐标信息去引用 "jar 包"下篇博客进行学习。