Maven pom.xml 中的第一行是什么意思

问题描述

Mavens 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
         https://maven.apache.org/xsd/maven-4.0.0.xsd">

解决方法

你真正的意思是第一个元素而不是第一行。在第一个元素之前可能有处理指令或注释。

开头 < 之后的第一个元素是第一个 XML 元素的名称。

属性 xmlns 指定元素所属的 XML 命名空间的 URI。 XML 允许您在一个文档中组合多个 XML 名称空间。对于 Maven,命名空间的名称是 http://maven.apache.org/POM/4.0.0。由于这是一个 URI,它不一定是一个有效的 URL。它只是一个资源的规范名称。

下一个属性 xmlns:xsi 使用可能性为同一个 XML 文档 (pom.xml) 声明另一个命名空间。它声明了名称空间 xsi,由 URI http://www.w3.org/2001/XMLSchema-instance 标识。

最后一个属性 schemaLocation 来自命名空间 http://www.w3.org/2001/XMLSchema-instance 并提供从 Maven 用于其 POM 的命名空间的 URI 到 URL 的映射,XML 解析器可以在其中找到用于命名空间。

顺便说一下,您可以选择任何标识符作为命名空间标识符。例如,您可以用 xsi 替换 xyz 的两次出现,并且文档仍然有效。在许多情况下,为标识符选择的标识符与其说是硬性要求,不如说是一种约定。

<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xyz="http://www.w3.org/2001/XMLSchema-instance"
         xyz:schemaLocation="http://maven.apache.org/POM/4.0.0
         https://maven.apache.org/xsd/maven-4.0.0.xsd">