目录
pom.xml 介绍
在Maven中,pom.xml 文件是一个 Project 的核心文件,它被称为项目对象模型(Project Object Model,简称POM)文件。该文件包含了构建 Project 所需的所有信息和配置。当执行 Maven 命令时,Maven会在当前目录查找到 pom.xml 文件,获取所需的配置信息。
pom.xml 中指定的一些配置包括项目依赖、可执行的插件、构建配置文件等。其他信息,如项目版本、描述、开发人员、邮件列表等也可以在这里指定。
pom.xml 结构
以下内容讲述 pom.xml 的结构。其中,<project>,<modelVersion> ,<groupId> ,<artifactId> ,和 <version> 为 pom.xml 必需的元素。
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1</version>
</project>
<project>
(必须)
在 pom.xml 文件中,<project> 是一个根元素,它定义了Maven Project 的基本结构和配置。
<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/maven-v4_0_0.xsd">
</project>
其中
- xmlns (XML Namespace) 声明一个默认的命名空间。在 pom.xml 文件中,它通常指向 Maven Project 对象模型的命名空间,值为 “http://maven.apache.org/POM/4.0.0” 。它用于标识文件中使用的元素属于哪个 XML 命名空间。这有助于避免不同XML文档中可能出现的元素名称冲突。
- xmlns:xsi (XML Schema Instance) 声明了XML Schema实例的命名空间,值为 “http://www.w3.org/2001/XMLSchema-instance” 。这个命名空间包含了一些特殊的属性,用于与XML Schema(一个用于定义XML文档结构和内容的标准)相关的功能。主要用于引入一些特定的属性,如 xsi:schemaLocation ,这些属性与 XML 验证和命名空间相关。
- xsi:schemaLocation 提供了XML文档所依据的XML Schema定义的位置。这个属性通常包含两部分:命名空间的URL,值为 “http://maven.apache.org/POM/4.0.0” ,和该命名空间对应的 Schema 文件的URL,值为 “http://maven.apache.org/maven-v4_0_0.xsd” 。它指导XML解析器如何验证文档的结构是否符合定义的Schema。
<modelVersion>
(必须)
<modelVersion> 位于根元素 <project> 中,指的是POM模型的版本。这个标签指明了该 POM 文件遵循的 Maven 对象模型版本。它是 pom.xml 文件中的一个必需元素,因为它帮助Maven解析器确定应该使用哪个版本的对象模型来解释POM文件。一般写为 4.0.0 。
<modelVersion>4.0.0</modelVersion>
<groupId> ,<artifactId> 和 <version>
(必须)
在 Maven 的 pom.xml 文件中,<groupId> ,<artifactId> 和 <version> 是三个核心元素,它们共同构成了 Project 的唯一标识符,称为坐标(Coordinates)。这些坐标用于在Maven仓库中唯一定位和区分 Project 或依赖项。
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1</version>
- <groupId> 定义了 Project 所属的组织或组。它通常是基于 Project 所属组织的域名的反转形式,以确保全球唯一性。它也有助于维护 Project 间的层次结构。
- <artifactId> 是 Project 的唯一基本标识符。它是 Project 的名称。用于在同一 groupId 下区分不同的 Project 或模块。
- <version> 标识 Project 的特定版本,有助于跟踪 Project 的演变,管理依赖,并确保构建和部署的一致性。这对于版本控制和管理 Project 的不同迭代至关重要。
文档将持续更新…