maven

这是 Maven 中使用的 Maven 项目描述符的参考。

XSD 可在以下位置获得:

<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"
  child.project.url.inherit.append.path=.. >
  <modelVersion/>

  <parent>
    <groupId/>
    <artifactId/>
    <version/>
    <relativePath/>
  </parent>

  <groupId/>
  <artifactId/>
  <version/>
  <packaging/>

  <name/>
  <description/>
  <url/>
  <inceptionYear/>
  <organization>
    <name/>
    <url/>
  </organization>
  <licenses>
    <license>
      <name/>
      <url/>
      <distribution/>
      <comments/>
    </license>
  </licenses>

  <developers>
    <developer>
      <id/>
      <name/>
      <email/>
      <url/>
      <organization/>
      <organizationUrl/>
      <roles/>
      <timezone/>
      <properties>
        <key>value</key>
      </properties>
    </developer>
  </developers>
  <contributors>
    <contributor>
      <name/>
      <email/>
      <url/>
      <organization/>
      <organizationUrl/>
      <roles/>
      <timezone/>
      <properties>
        <key>value</key>
      </properties>
    </contributor>
  </contributors>

  <mailingLists>
    <mailingList>
      <name/>
      <subscribe/>
      <unsubscribe/>
      <post/>
      <archive/>
      <otherArchives/>
    </mailingList>
  </mailingLists>

  <prerequisites>
    <maven/>
  </prerequisites>

  <modules/>

  <scm child.scm.connection.inherit.append.path=.. child.scm.developerConnection.inherit.append.path=.. child.scm.url.inherit.append.path=.. >
    <connection/>
    <developerConnection/>
    <tag/>
    <url/>
  </scm>
  <issueManagement>
    <system/>
    <url/>
  </issueManagement>
  <ciManagement>
    <system/>
    <url/>
    <notifiers>
      <notifier>
        <type/>
        <sendOnError/>
        <sendOnFailure/>
        <sendOnSuccess/>
        <sendOnWarning/>
        <address/>
        <configuration>
          <key>value</key>
        </configuration>
      </notifier>
    </notifiers>
  </ciManagement>

  <distributionManagement>
    <repository>
      <uniqueVersion/>
      <releases>
        <enabled/>
        <updatePolicy/>
        <checksumPolicy/>
      </releases>
      <snapshots>
        <enabled/>
        <updatePolicy/>
        <checksumPolicy/>
      </snapshots>
      <id/>
      <name/>
      <url/>
      <layout/>
    </repository>
    <snapshotRepository>
      <uniqueVersion/>
      <releases>
        <enabled/>
        <updatePolicy/>
        <checksumPolicy/>
      </releases>
      <snapshots>
        <enabled/>
        <updatePolicy/>
        <checksumPolicy/>
      </snapshots>
      <id/>
      <name/>
      <url/>
      <layout/>
    </snapshotRepository>
    <site child.site.url.inherit.append.path=.. >
      <id/>
      <name/>
      <url/>
    </site>
    <downloadUrl/>
    <relocation>
      <groupId/>
      <artifactId/>
      <version/>
      <message/>
    </relocation>
    <status/>
  </distributionManagement>

  <properties>
    <key>value</key>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId/>
        <artifactId/>
        <version/>
        <type/>
        <classifier/>
        <scope/>
        <systemPath/>
        <exclusions>
          <exclusion>
            <artifactId/>
            <groupId/>
          </exclusion>
        </exclusions>
        <optional/>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId/>
      <artifactId/>
      <version/>
      <type/>
      <classifier/>
      <scope/>
      <systemPath/>
      <exclusions>
        <exclusion>
          <artifactId/>
          <groupId/>
        </exclusion>
      </exclusions>
      <optional/>
    </dependency>
  </dependencies>

  <repositories>
    <repository>
      <releases>
        <enabled/>
        <updatePolicy/>
        <checksumPolicy/>
      </releases>
      <snapshots>
        <enabled/>
        <updatePolicy/>
        <checksumPolicy/>
      </snapshots>
      <id/>
      <name/>
      <url/>
      <layout/>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <releases>
        <enabled/>
        <updatePolicy/>
        <checksumPolicy/>
      </releases>
      <snapshots>
        <enabled/>
        <updatePolicy/>
        <checksumPolicy/>
      </snapshots>
      <id/>
      <name/>
      <url/>
      <layout/>
    </pluginRepository>
  </pluginRepositories>

  <build>
    <sourceDirectory/>
    <scriptSourceDirectory/>
    <testSourceDirectory/>
    <outputDirectory/>
    <testOutputDirectory/>
    <extensions>
      <extension>
        <groupId/>
        <artifactId/>
        <version/>
      </extension>
    </extensions>
    <defaultGoal/>
    <resources>
      <resource>
        <targetPath/>
        <filtering/>
        <directory/>
        <includes/>
        <excludes/>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <targetPath/>
        <filtering/>
        <directory/>
        <includes/>
        <excludes/>
      </testResource>
    </testResources>
    <directory/>
    <finalName/>
    <filters/>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId/>
          <artifactId/>
          <version/>
          <extensions/>
          <executions>
            <execution>
              <id/>
              <phase/>
              <goals/>
              <inherited/>
              <configuration/>
            </execution>
          </executions>
          <dependencies>
            <dependency>
              <groupId/>
              <artifactId/>
              <version/>
              <type/>
              <classifier/>
              <scope/>
              <systemPath/>
              <exclusions>
                <exclusion>
                  <artifactId/>
                  <groupId/>
                </exclusion>
              </exclusions>
              <optional/>
            </dependency>
          </dependencies>
          <goals/>
          <inherited/>
          <configuration/>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId/>
        <artifactId/>
        <version/>
        <extensions/>
        <executions>
          <execution>
            <id/>
            <phase/>
            <goals/>
            <inherited/>
            <configuration/>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId/>
            <artifactId/>
            <version/>
            <type/>
            <classifier/>
            <scope/>
            <systemPath/>
            <exclusions>
              <exclusion>
                <artifactId/>
                <groupId/>
              </exclusion>
            </exclusions>
            <optional/>
          </dependency>
        </dependencies>
        <goals/>
        <inherited/>
        <configuration/>
      </plugin>
    </plugins>
  </build>

  <reports/>
  <reporting>
    <excludeDefaults/>
    <outputDirectory/>
    <plugins>
      <plugin>
        <groupId/>
        <artifactId/>
        <version/>
        <reportSets>
          <reportSet>
            <id/>
            <reports/>
            <inherited/>
            <configuration/>
          </reportSet>
        </reportSets>
        <inherited/>
        <configuration/>
      </plugin>
    </plugins>
  </reporting>

  <profiles>
    <profile>
      <id/>
      <activation>
        <activeByDefault/>
        <jdk/>
        <os>
          <name/>
          <family/>
          <arch/>
          <version/>
        </os>
        <property>
          <name/>
          <value/>
        </property>
        <file>
          <missing/>
          <exists/>
        </file>
      </activation>
      <build>
        <defaultGoal/>
        <resources>
          <resource>
            <targetPath/>
            <filtering/>
            <directory/>
            <includes/>
            <excludes/>
          </resource>
        </resources>
        <testResources>
          <testResource>
            <targetPath/>
            <filtering/>
            <directory/>
            <includes/>
            <excludes/>
          </testResource>
        </testResources>
        <directory/>
        <finalName/>
        <filters/>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId/>
              <artifactId/>
              <version/>
              <extensions/>
              <executions>
                <execution>
                  <id/>
                  <phase/>
                  <goals/>
                  <inherited/>
                  <configuration/>
                </execution>
              </executions>
              <dependencies>
                <dependency>
                  <groupId/>
                  <artifactId/>
                  <version/>
                  <type/>
                  <classifier/>
                  <scope/>
                  <systemPath/>
                  <exclusions>
                    <exclusion>
                      <artifactId/>
                      <groupId/>
                    </exclusion>
                  </exclusions>
                  <optional/>
                </dependency>
              </dependencies>
              <goals/>
              <inherited/>
              <configuration/>
            </plugin>
          </plugins>
        </pluginManagement>
        <plugins>
          <plugin>
            <groupId/>
            <artifactId/>
            <version/>
            <extensions/>
            <executions>
              <execution>
                <id/>
                <phase/>
                <goals/>
                <inherited/>
                <configuration/>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId/>
                <artifactId/>
                <version/>
                <type/>
                <classifier/>
                <scope/>
                <systemPath/>
                <exclusions>
                  <exclusion>
                    <artifactId/>
                    <groupId/>
                  </exclusion>
                </exclusions>
                <optional/>
              </dependency>
            </dependencies>
            <goals/>
            <inherited/>
            <configuration/>
          </plugin>
        </plugins>
      </build>

      <modules/>

      <distributionManagement>
        <repository>
          <uniqueVersion/>
          <releases>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          </releases>
          <snapshots>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          </snapshots>
          <id/>
          <name/>
          <url/>
          <layout/>
        </repository>
        <snapshotRepository>
          <uniqueVersion/>
          <releases>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          </releases>
          <snapshots>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          </snapshots>
          <id/>
          <name/>
          <url/>
          <layout/>
        </snapshotRepository>
        <site child.site.url.inherit.append.path=.. >
          <id/>
          <name/>
          <url/>
        </site>
        <downloadUrl/>
        <relocation>
          <groupId/>
          <artifactId/>
          <version/>
          <message/>
        </relocation>
        <status/>
      </distributionManagement>

      <properties>
        <key>value</key>
      </properties>

      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId/>
            <artifactId/>
            <version/>
            <type/>
            <classifier/>
            <scope/>
            <systemPath/>
            <exclusions>
              <exclusion>
                <artifactId/>
                <groupId/>
              </exclusion>
            </exclusions>
            <optional/>
          </dependency>
        </dependencies>
      </dependencyManagement>
      <dependencies>
        <dependency>
          <groupId/>
          <artifactId/>
          <version/>
          <type/>
          <classifier/>
          <scope/>
          <systemPath/>
          <exclusions>
            <exclusion>
              <artifactId/>
              <groupId/>
            </exclusion>
          </exclusions>
          <optional/>
        </dependency>
      </dependencies>

      <repositories>
        <repository>
          <releases>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          </releases>
          <snapshots>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          </snapshots>
          <id/>
          <name/>
          <url/>
          <layout/>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <releases>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          </releases>
          <snapshots>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          </snapshots>
          <id/>
          <name/>
          <url/>
          <layout/>
        </pluginRepository>
      </pluginRepositories>

      <reports/>
      <reporting>
        <excludeDefaults/>
        <outputDirectory/>
        <plugins>
          <plugin>
            <groupId/>
            <artifactId/>
            <version/>
            <reportSets>
              <reportSet>
                <id/>
                <reports/>
                <inherited/>
                <configuration/>
              </reportSet>
            </reportSets>
            <inherited/>
            <configuration/>
          </plugin>
        </plugins>
      </reporting>
    </profile>
  </profiles>
</project>

项目

<project>元素是描述符的根。 下表列出了所有可能的子元素。

属性 类型 描述
child.project.url.inherit.append.path 细绳 当孩子从项目的 url 继承时,是否附加路径?注意:虽然出于技术原因,该字段的类型是 String,但语义类型实际上是 Boolean
默认值true
:Maven 3.6.1
元素 类型 描述
型号版本 细绳 声明此 POM 符合哪个版本的项目描述符。
父母 家长 父项目的位置(如果存在)。如果未指定父项目的值,则它们将成为该项目的默认值。该位置以组 ID、工件 ID 和版本的形式给出。
组 ID 细绳 项目的通用唯一标识符。通常使用完全限定的包名称来将其与具有相似名称的其他项目区分开来(例如 org.apache.maven)。
工件 ID 细绳 此工件的标识符在由组 ID 给出的组内是唯一的。工件是项目生产或使用的东西。Maven 为项目生成的工件示例包括:JAR、源代码和二进制分发以及 WAR。
版本 细绳 此项目生成的工件的当前版本。
包装 细绳 该项目生成的工件类型,例如 jar war ear pom。插件可以创建自己的包装,因此也可以创建自己的包装类型,因此此列表不包含所有可能的类型。
默认值为jar
姓名 细绳 项目的全名。
描述 细绳 项目的详细描述,Maven 在需要描述项目时使用,例如在网站上。虽然可以将此元素指定为 CDATA 以启用在描述中使用 HTML 标记,但不鼓励允许纯文本表示。如果您需要修改生成网站的索引页面,您可以指定您自己的而不是调整此文本。
网址 细绳 项目主页的 URL。
默认值为:父值 [+ 路径调整] + (artifactId 或 project.directory 属性),或者如果项目的 child.project.url.inherit.append.path="false"则只是父值
成立年份 细绳 项目开始的年份,用 4 位数字指定。此值用于生成版权声明以及提供信息。
组织 组织 该元素描述了项目所属组织的各种属性。创建文档时会使用这些属性(用于版权声明和链接)。
执照/执照* 列表<许可证> (很多)这个元素描述了这个项目的所有许可证。每个许可证由一个 许可证元素描述,然后由附加元素描述。项目应该只列出适用于项目的许可证,而不是适用于依赖项的许可证。如果列出了多个许可证,则假定用户可以选择其中任何一个,而不是他们必须全部接受。
开发商/开发商* 列表<开发者> (很多)描述项目的提交者。
贡献者/贡献者* 列表<贡献者> (许多)描述尚未成为提交者的项目的贡献者。
邮件列表/邮件列表* 列表<邮件列表> (很多)包含有关项目邮件列表的信息。
先决条件 先决条件 描述此项目的构建环境中的先决条件。
模块/模块* 列表<字符串> (许多)作为该项目的一部分构建的模块(有时称为子项目)。列出的每个模块都是包含该模块的目录的相对路径。为了与从父级计算默认 url 的方式保持一致,建议模块名称与工件 ID 匹配。
单片机 单片机 项目使用的 SCM 规范,如 CVS、Subversion 等。
问题管理 问题管理 项目的问题管理系统信息。
企业管理 信息管理 项目的持续集成信息。
分销管理 分销管理 项目的分发信息,可以将站点和工件分别部署到远程 Web 服务器和存储库。
属性/=* 特性 (许多)可以在整个 POM 中用作替代的属性,如果启用,则用作资源中的过滤器。格式为 <name>value</name>
依赖管理 依赖管理 继承自此的项目的默认依赖项信息。本节中的依赖关系不会立即解决。相反,当派生自此的 POM 声明由匹配的 groupId 和 artifactId 描述的依赖项时,如果尚未指定此部分中的版本和其他值,则它们将用于该依赖项。
依赖/依赖* 列表<依赖> (很多)该元素描述了与项目相关的所有依赖项。这些依赖项用于在构建过程中为您的项目构建类路径。它们会自动从该项目中定义的存储库中下载。有关更多信息,请参阅 依赖机制
存储库/存储库* 列表<存储库> (许多)用于发现依赖项和扩展的远程存储库列表。
pluginRepositories/ pluginRepository * 列表<存储库> (许多)用于发现构建和报告插件的远程存储库列表。
建造 建造 构建项目所需的信息。
报告 DOM 已弃用。现在被 Maven 忽略。
报告 报告 此元素包括用于在 Maven 生成的站点上生成报告的报告插件规范。这些报告将在用户执行 mvn site时运行。所有报告都将包含在导航栏中以供浏览。
个人资料/个人资料* 列表<配置文件> (许多)项目本地构建配置文件的列表,在激活时将修改构建过程。

父母

<parent>元素包含定位该项目将继承自的父项目所需的信息 。 注意:这个元素的子元素没有被插值,必须以文字值的形式给出。

元素 类型 描述
组 ID 细绳 要继承的父项目的组 ID。
工件 ID 细绳 要继承的父项目的工件 ID。
版本 细绳 要继承的父项目的版本。
相对路径 细绳 检出中父 pom.xml文件的相对路径。如果未指定,则默认为 ../pom.xml。Maven 首先在文件系统的这个位置查找父 POM,然后是本地存储库,最后是远程存储库。 relativePath允许您选择不同的位置,例如当您的结构是平坦的时,或者在没有中间父 POM 的情况下更深。但是,组 ID、工件 ID 和版本仍然是必需的,并且必须与给定位置的文件匹配,否则它将恢复到 POM 的存储库。此功能仅用于增强该项目的本地结帐开发。如果您想禁用该功能并始终从存储库解析父 POM,请将值设置为空字符串。
默认值为../pom.xml

组织

指定产生此项目的组织。

元素 类型 描述
姓名 细绳 组织的全名。
网址 细绳 组织主页的 URL。

执照

描述此项目的许可证。这用于生成项目网站的许可页面,以及在其他报告和验证中考虑。为项目列出的许可证是项目本身的许可证,而不是依赖项的许可证。

元素 类型 描述
姓名 细绳 许可证的完整法定名称。
网址 细绳 许可证文本的官方网址。
分配 细绳 分发此项目的主要方法。
回购
可以从 Maven 存储库下载
手动的
用户必须手动下载并安装依赖项。
注释 细绳 与此许可证有关的附录信息。

开发商

有关此项目的其中一位提交者的信息。

元素 类型 描述
ID 细绳 开发者在 SCM 中的唯一 ID。
姓名 细绳 贡献者的全名。
电子邮件 细绳 投稿人的电子邮件地址。
网址 细绳 贡献者主页的 URL。
组织 细绳 贡献者所属的组织。
组织网址 细绳 组织的 URL。
角色/角色* 列表<字符串> (很多)贡献者在项目中扮演的角色。每个角色由一个 角色元素描述,其主体是一个角色名称。这也可以用来描述贡献。
时区 细绳 贡献者所在的时区。通常,这是一个介于 -12+14之间的数字或有效的时区 ID,例如“America/Montreal”(UTC-05:00)或“Europe/Paris”(UTC+01) :00)。
属性/=* 特性 (许多)关于贡献者的属性,例如即时通讯程序句柄。

贡献者

对项目做出贡献但没有提交权限的人员的描述。通常,这些贡献以提交的补丁的形式出现。

元素 类型 描述
姓名 细绳 贡献者的全名。
电子邮件 细绳 投稿人的电子邮件地址。
网址 细绳 贡献者主页的 URL。
组织 细绳 贡献者所属的组织。
组织网址 细绳 组织的 URL。
角色/角色* 列表<字符串> (很多)贡献者在项目中扮演的角色。每个角色由一个 角色元素描述,其主体是一个角色名称。这也可以用来描述贡献。
时区 细绳 贡献者所在的时区。通常,这是一个介于 -12+14之间的数字或有效的时区 ID,例如“America/Montreal”(UTC-05:00)或“Europe/Paris”(UTC+01) :00)。
属性/=* 特性 (许多)关于贡献者的属性,例如即时通讯程序句柄。

邮件列表

此元素描述与项目关联的所有邮件列表。自动生成的站点引用此信息。

元素 类型 描述
姓名 细绳 邮寄名单的名称。
订阅 细绳 可用于订阅邮件列表的电子邮件地址或链接。如果这是一个电子邮件地址, 则在创建文档时会自动创建一个mailto:链接。
退订 细绳 可用于取消订阅邮件列表的电子邮件地址或链接。如果这是一个电子邮件地址, 则在创建文档时会自动创建一个mailto:链接。
邮政 细绳 可用于发布到邮件列表的电子邮件地址或链接。如果这是一个电子邮件地址, 则在创建文档时会自动创建一个mailto:链接。
档案 细绳 指向您可以浏览邮件列表存档的 URL 的链接。
其他档案/其他档案* 列表<字符串> (很多)指向备用 URL 的链接,您可以在其中浏览列表存档。

先决条件

描述项目可以具有的先决条件。

元素 类型 描述
行家 细绳 对于插件项目(打包为 maven-plugin),使用生成的插件所需的 Maven 最低版本。
在 Maven 2 中,这也指定了构建项目所需的 Maven 的最低版本,但 在 Maven 3 中已弃用此用法并且不再检查:改用 Maven Enforcer 插件的requireMavenVersion规则
默认值为2.0

单片机

<scm>元素包含项目的 SCM(源代码控制管理)所需的信息。

属性 类型 描述
child.scm.connection.inherit.append.path 细绳 当孩子从 scm 连接继承时,是否附加路径?注意:虽然出于技术原因,该字段的类型是 String,但语义类型实际上是 Boolean
默认值true
:Maven 3.6.1
child.scm.developerConnection.inherit.append.path 细绳 当孩子从 scm 开发者连接继承时,附加路径与否?注意:虽然出于技术原因,该字段的类型是 String,但语义类型实际上是 Boolean
默认值true
:Maven 3.6.1
child.scm.url.inherit.append.path 细绳 当孩子从 scm url 继承时,是否附加路径?注意:虽然出于技术原因,该字段的类型是 String,但语义类型实际上是 Boolean
默认值true
:Maven 3.6.1
元素 类型 描述
联系 细绳 描述存储库以及如何连接到存储库的源代码控制管理系统 URL。有关详细信息,请参阅支持的 SCM 的 URL 格式列表。此连接是只读的。
默认值为:父值 [+ 路径调整] + (artifactId 或 project.directory 属性),或者如果 scm 的 child.scm.connection.inherit.append.path="false"则只是父值
开发者连接 细绳 就像 connection,但是对于开发者来说,这个 scm 连接不是只读的。
默认值为:父值 [+ 路径调整] + (artifactId 或 project.directory 属性),或者如果 scm 的 child.scm.developerConnection.inherit.append.path="false"则只是父值
标签 细绳 当前代码的标签。默认情况下,它在开发过程中设置为 HEAD。
默认值为HEAD
网址 细绳 项目的可浏览 SCM 存储库的 URL,例如 ViewVC 或 Fisheye。
默认值为:父值 [+ 路径调整] + (artifactId 或 project.directory 属性),或者如果 scm 的 child.scm.url.inherit.append.path="false"则只是父值

问题管理

有关用于管理此项目的问题跟踪(或错误跟踪)系统的信息。

元素 类型 描述
系统 细绳 问题管理系统的名称,例如 Bugzilla
网址 细绳 项目使用的问题管理系统的 URL。

企业管理

<CiManagement>元素包含项目持续集成系统所需的信息。

元素 类型 描述
系统 细绳 持续集成系统的名称,例如 continuum
网址 细绳 项目使用的持续集成系统的 URL(如果它具有 Web 界面)。
通知者/通知者* 列表<通知程序> (很多)构建失败时通知开发者/用户的配置,包括用户信息和通知模式。

通知者

配置一种在构建中断时通知用户/开发人员的方法。

元素 类型 描述
类型 细绳 用于传递通知的机制。
默认值为邮件
发送错误 布尔值 是否发送错误通知。
默认值为true
发送失败 布尔值 是否发送失败通知。
默认值为true
发送成功 布尔值 是否发送成功通知。
默认值为true
发送警告 布尔值 是否发送警告通知。
默认值为true
地址 细绳 已弃用。将通知发送到哪里 - 例如电子邮件地址。
配置/=* 特性 (许多)特定于此通知程序的扩展配置在这里。

分销管理

此元素描述了与项目分发有关的所有内容。它主要用于部署工件和构建生成的站点。

元素 类型 描述
存储库 部署存储库 将项目生成的工件部署到远程存储库所需的信息。
快照存储库 部署存储库 将工件快照部署到的位置。如果未给出,则默认为 存储库元素。
地点 地点 部署项目网站所需的信息。
下载地址 细绳 项目下载页面的 URL。如果没有给出用户将被引用到 url给出的主页。这是为了帮助定位由于许可限制而不在存储库中的工件。
搬迁 搬迁 如果工件已被移动到新的组 ID 和/或工件 ID,则它的重定位信息。
状态 细绳 提供此工件在远程存储库中的状态。这不能在您的本地项目中设置,因为它是由将其放置在存储库中的工具更新的。有效值为: none(默认)、 converted(存储库管理器从 Maven 1 POM 转换)、 partner(直接从合作伙伴 Maven 2 存储库同步)、 deployed(从 Maven 2 实例部署)、 verified(已手动验证为正确和最终)。

存储库

存储库包含部署到远程存储库所需的信息。

元素 类型 描述
唯一版本 布尔值 是否为快照分配一个由时间戳和内部版本号组成的唯一版本,或者每次都使用相同的版本
默认值是true
发布 存储库策略 如何处理从此存储库下载版本。
快照 存储库策略 如何处理从此存储库下载快照。
ID 细绳 存储库的唯一标识符。例如,这用于将存储库与 settings.xml文件中的配置相匹配。此外,在 POM 继承和配置文件注入期间使用标识符来检测应该合并的存储库。
姓名 细绳 存储库的人类可读名称。
网址 细绳 存储库的 url,格式为 protocol://hostname/path
布局 细绳 此存储库用于定位和存储工件的布局类型可以是 legacydefault
默认值为默认值

发布

下载政策。

元素 类型 描述
启用 细绳 是否使用此存储库来下载此类工件。注意:虽然出于技术原因,该字段的类型是 String,但语义类型实际上是 Boolean。默认值为 true
更新政策 细绳 下载更新的频率 - 可以是 始终、 每天(默认)、 间隔:XXX(以分钟为单位)或 从不(仅当本地不存在时)。
校验和策略 细绳 当工件校验和验证失败时该怎么办。有效值为 ignorefailwarn(默认值)。

快照

下载政策。

元素 类型 描述
启用 细绳 是否使用此存储库来下载此类工件。注意:虽然出于技术原因,该字段的类型是 String,但语义类型实际上是 Boolean。默认值为 true
更新政策 细绳 下载更新的频率 - 可以是 始终、 每天(默认)、 间隔:XXX(以分钟为单位)或 从不(仅当本地不存在时)。
校验和策略 细绳 当工件校验和验证失败时该怎么办。有效值为 ignorefailwarn(默认值)。

快照存储库

存储库包含部署到远程存储库所需的信息。

元素 类型 描述
唯一版本 布尔值 是否为快照分配一个由时间戳和内部版本号组成的唯一版本,或者每次都使用相同的版本
默认值是true
发布 存储库策略 如何处理从此存储库下载版本。
快照 存储库策略 如何处理从此存储库下载快照。
ID 细绳 存储库的唯一标识符。例如,这用于将存储库与 settings.xml文件中的配置相匹配。此外,在 POM 继承和配置文件注入期间使用标识符来检测应该合并的存储库。
姓名 细绳 存储库的人类可读名称。
网址 细绳 存储库的 url,格式为 protocol://hostname/path
布局 细绳 此存储库用于定位和存储工件的布局类型可以是 legacydefault
默认值为默认值

地点

包含部署网站所需的信息。

属性 类型 描述
child.site.url.inherit.append.path 细绳 当孩子从分发管理站点 url 继承时,是否附加路径?注意:虽然出于技术原因,该字段的类型是 String,但语义类型实际上是 Boolean
默认值true
:Maven 3.6.1
元素 类型 描述
ID 细绳 部署位置的唯一标识符。例如,这用于将站点与 settings.xml文件中的配置进行匹配。
姓名 细绳 部署位置的人类可读名称。
网址 细绳 网站部署位置的 url,格式为 protocol://hostname/path
默认值为:父值 [+ 路径调整] + (artifactId 或 project.directory 属性),或者如果站点的 child.site.url.inherit.append.path="false"则只是父值

搬迁

描述工件移动到的位置。如果省略任何值,则假定它与以前相同。

元素 类型 描述
组 ID 细绳 工件已移动到的组 ID。
工件 ID 细绳 工件的新工件 ID。
版本 细绳 新版本的神器。
信息 细绳 向用户显示移动的附加消息,例如原因。

依赖管理

用于管理一组 POM 中使用的默认依赖关系信息的部分。

元素 类型 描述
依赖/依赖* 列表<依赖> (很多)此处指定的依赖项只有在组内的 POM 中被引用时才会使用。这允许为特定依赖项指定“标准”版本。

依赖

<dependency>元素包含有关项目依赖项的信息。

元素 类型 描述
组 ID 细绳 产生依赖的项目组,例如 org.apache.maven
工件 ID 细绳 项目组生成的工件的唯一 ID,例如 maven-artifact
版本 细绳 依赖的版本,例如 3.2.1。在 Maven 2 中,这也可以指定为一个版本范围。
类型 细绳 依赖类型,将映射到文件扩展名、可选分类器和一些其他属性。一些示例是 jarwarejb-clienttest-jar:请参阅 默认工件处理程序以获取列表。新类型可以通过扩展来定义,所以这不是一个完整的列表。
默认值为jar
分类器 细绳 依赖的分类器。它被附加到版本之后的文件名中。这允许:
  • 引用附加的工件,例如javadoc:查看列表的默认工件处理程序
  • 区分属于同一 POM 但构建方式不同的两个工件。例如,jdk14jdk15
范围 细绳 依赖的范围 ——compileruntimetestsystemprovided。用于计算用于编译、测试等的各种类路径。它还有助于确定在该项目的分发中包含哪些工件。有关更多信息,请参阅 依赖机制。默认范围是 compile
系统路径 细绳 仅适用于系统范围。请注意, 不鼓励使用此属性,并且可能会在以后的版本中被替换。这指定了此依赖项在文件系统上的路径。需要值的绝对路径,而不是相对路径。使用提供机器特定绝对路径的属性,例如 ${java.home}
排除/排除* 列表<排除> (许多)列出一组在计算传递依赖项时应从该依赖项的工件列表中排除的工件。
可选的 细绳 指示依赖项对于使用此库是可选的。如果在其他地方使用该库,则依赖关系的版本将被考虑到依赖关系计算中,但它不会被传递。注意:虽然出于技术原因,该字段的类型是 String,但语义类型实际上是 Boolean。默认值为 false

排除

<exclusion>元素包含将工件排除到项目中所需的信息。

元素 类型 描述
工件 ID 细绳 要排除的项目的工件 ID。
组 ID 细绳 要排除的项目的组 ID。

存储库

存储库包含与远程存储库建立连接所需的信息。

元素 类型 描述
发布 存储库策略 如何处理从此存储库下载版本。
快照 存储库策略 如何处理从此存储库下载快照。
ID 细绳 存储库的唯一标识符。例如,这用于将存储库与 settings.xml文件中的配置相匹配。此外,在 POM 继承和配置文件注入期间使用标识符来检测应该合并的存储库。
姓名 细绳 存储库的人类可读名称。
网址 细绳 存储库的 url,格式为 protocol://hostname/path
布局 细绳 此存储库用于定位和存储工件的布局类型可以是 legacydefault
默认值为默认值

插件库

存储库包含与远程存储库建立连接所需的信息。

元素 类型 描述
发布 存储库策略 如何处理从此存储库下载版本。
快照 存储库策略 如何处理从此存储库下载快照。
ID 细绳 存储库的唯一标识符。例如,这用于将存储库与 settings.xml文件中的配置相匹配。此外,在 POM 继承和配置文件注入期间使用标识符来检测应该合并的存储库。
姓名 细绳 存储库的人类可读名称。
网址 细绳 存储库的 url,格式为 protocol://hostname/path
布局 细绳 此存储库用于定位和存储工件的布局类型可以是 legacydefault
默认值为默认值

建造

<build>元素包含构建项目所需的信息。 默认值在 Super POM 中定义。

元素 类型 描述
源目录 细绳 此元素指定包含项目源的目录。生成的构建系统将在构建项目时从该目录编译源代码。给出的路径是相对于项目描述符的。默认值为 src/main/java
脚本源目录 细绳 此元素指定包含项目脚本源的目录。此目录与 sourceDirectory 不同,因为它的内容在大多数情况下将被复制到输出目录(因为脚本被解释而不是编译)。默认值为 src/main/scripts
测试源目录 细绳 此元素指定包含项目的单元测试源的目录。生成的构建系统将在测试项目时编译这些目录。给出的路径是相对于项目描述符的。默认值为 src/test/java
输出目录 细绳 放置已编译应用程序类的目录。默认值为 target/classes
测试输出目录 细绳 放置已编译测试类的目录。默认值为 target/test-classes
扩展/扩展* 列表<扩展名> (很多)从这个项目中使用的一组构建扩展。
默认目标 细绳 当没有为项目指定时执行的默认目标(或 Maven 2 中的阶段)。请注意,在多模块构建的情况下,只有顶级项目的默认目标是相关的,即忽略子模块的默认目标。从 Maven 3 开始,多个目标/阶段可以用空格分隔。
资源/资源* 列表<资源> (很多)该元素描述所有类路径资源,例如与项目关联的属性文件。这些资源通常包含在最终包中。默认值为 src/main/resources
测试资源/测试资源* 列表<资源> (很多)这个元素描述了所有的类路径资源,例如与项目的单元测试相关的属性文件。默认值为 src/test/resources
目录 细绳 放置构建生成的所有文件的目录。默认值为 目标
最终名称 细绳 将调用生成的工件的文件名(不包括扩展名,并且没有路径信息)。默认值为 ${artifactId}-${version}
过滤器/过滤器* 列表<字符串> (很多)启用过滤时使用的过滤器属性文件列表。
插件管理 插件管理 默认插件信息可供从该项目派生的项目参考。除非被引用,否则此插件配置不会被解析或绑定到生命周期。给定插件的任何本地配置都将在此处覆盖插件的整个定义。
插件/插件* 列表<插件> (很多)要使用的插件列表。

延期

描述要使用的构建扩展。

元素 类型 描述
组 ID 细绳 扩展的工件的组 ID。
工件 ID 细绳 扩展的工件 ID。
版本 细绳 扩展的版本。

资源

该元素描述了与项目或单元测试相关的所有类路径资源。

元素 类型 描述
目标路径 细绳 描述资源目标路径。该路径相对于目标/类目录(即 ${project.build.outputDirectory})。例如,如果您希望该资源出现在特定包( org.apache.maven.messages)中,则必须使用以下值指定此元素: org/apache/maven/messages。但是,如果您只是将资源放在源目录结构中,则不需要这样做。
过滤 细绳 是否过滤资源以用参数化值替换标记。这些值取自 属性元素和过滤器元素中列出的文件中的属性 。注意:虽然出于技术原因,该字段的类型是 String,但语义类型实际上是 Boolean。默认值为 false
目录 细绳 描述存储资源的目录。路径是相对于 POM 的。
包括/包括* 列表<字符串> (许多)要包含的模式列表,例如 **/*.xml
排除/排除* 列表<字符串> (许多)要排除的模式列表,例如 **/*.xml

测试资源

该元素描述了与项目或单元测试相关的所有类路径资源。

元素 类型 描述
目标路径 细绳 描述资源目标路径。该路径相对于目标/类目录(即 ${project.build.outputDirectory})。例如,如果您希望该资源出现在特定包( org.apache.maven.messages)中,则必须使用以下值指定此元素: org/apache/maven/messages。但是,如果您只是将资源放在源目录结构中,则不需要这样做。
过滤 细绳 是否过滤资源以用参数化值替换标记。这些值取自 属性元素和过滤器元素中列出的文件中的属性 。注意:虽然出于技术原因,该字段的类型是 String,但语义类型实际上是 Boolean。默认值为 false
目录 细绳 描述存储资源的目录。路径是相对于 POM 的。
包括/包括* 列表<字符串> (许多)要包含的模式列表,例如 **/*.xml
排除/排除* 列表<字符串> (许多)要排除的模式列表,例如 **/*.xml

插件管理

用于管理一组 POM 中使用的默认插件信息的部分。

元素 类型 描述
插件/插件* 列表<插件> (很多)要使用的插件列表。

插入

<plugin>元素包含插件所需的信息。

元素 类型 描述
组 ID 细绳 存储库中插件的组 ID。
默认值为org.apache.maven.plugins
工件 ID 细绳 存储库中插件的工件 ID。
版本 细绳 要使用的插件的版本(或有效的版本范围)。
扩展 细绳 是否从此插件加载 Maven 扩展(例如打包和类型处理程序)。出于性能原因,仅应在必要时启用此功能。注意:虽然出于技术原因,该字段的类型是 String,但语义类型实际上是 Boolean。默认值为 false
执行/执行* 列表<插件执行> (许多)在构建生命周期中执行的一组目标的多个规范,每个(可能)具有不同的配置。
依赖/依赖* 列表<依赖> (许多)该项目需要引入插件类加载器的附加依赖项。
目标 DOM 已弃用。Maven 未使用。
遗传 细绳 是否应将任何配置传播到子 POM。注意:虽然出于技术原因,该字段的类型是 String,但语义类型实际上是 Boolean。默认值为 true
配置 DOM

配置为 DOM 对象。

默认情况下,每个元素内容都会被修剪,但从 Maven 3.1.0 开始,您可以将xml:space="preserve"添加到要保留空白的元素中。

您可以通过向配置元素的子元素添加combine.childrencombine.self属性来控制子 POM 如何从父 POM 继承配置:

  • combine.children:可用值是merge(默认)和append
  • combine.self:可用值是merge(默认)和override

有关详细信息,请参阅POM 参考文档Xpp3DomUtils

执行

<execution>元素包含执行插件所需的信息。

元素 类型 描述
ID 细绳 此执行的标识符,用于在构建期间标记目标,以及在继承和配置文件注入期间匹配要合并的执行。
默认值为默认值
阶段 细绳 将此执行中的目标绑定到的构建生命周期阶段。如果省略,目标将绑定到插件指定的默认阶段。
目标/目标* 列表<字符串> (许多)使用给定配置执行的目标。
遗传 细绳 是否应将任何配置传播到子 POM。注意:虽然出于技术原因,该字段的类型是 String,但语义类型实际上是 Boolean。默认值为 true
配置 DOM

配置为 DOM 对象。

默认情况下,每个元素内容都会被修剪,但从 Maven 3.1.0 开始,您可以将xml:space="preserve"添加到要保留空白的元素中。

您可以通过向配置元素的子元素添加combine.childrencombine.self属性来控制子 POM 如何从父 POM 继承配置:

  • combine.children:可用值是merge(默认)和append
  • combine.self:可用值是merge(默认)和override

有关详细信息,请参阅POM 参考文档Xpp3DomUtils

报告

用于管理报告及其配置的部分。

元素 类型 描述
排除默认值 细绳 如果为 true,则默认报告不包含在站点生成中。这包括“项目信息”菜单中的报告。注意:虽然出于技术原因,该字段的类型是 String,但语义类型实际上是 Boolean。默认值为 false
输出目录 细绳 存储所有生成的报告的位置。默认值为 ${project.build.directory}/site
插件/插件* 列表<报表插件> (许多)要使用的报告插件及其配置。

插入

<plugin>元素包含报告插件所需的信息。

元素 类型 描述
组 ID 细绳 存储库中报告插件的组 ID。
默认值为org.apache.maven.plugins
工件 ID 细绳 存储库中报告插件的工件 ID。
版本 细绳 要使用的报告插件的版本。
报告集/报告集* 列表<报告集> (许多)一组报告的多个规范,每个具有(可能)不同的配置。这是与 构建中的执行并行的报告。
遗传 细绳 是否应将任何配置传播到子 POM。注意:虽然出于技术原因,该字段的类型是 String,但语义类型实际上是 Boolean。默认值为 true
配置 DOM

配置为 DOM 对象。

默认情况下,每个元素内容都会被修剪,但从 Maven 3.1.0 开始,您可以将xml:space="preserve"添加到要保留空白的元素中。

您可以通过向配置元素的子元素添加combine.childrencombine.self属性来控制子 POM 如何从父 POM 继承配置:

  • combine.children:可用值是merge(默认)和append
  • combine.self:可用值是merge(默认)和override

有关详细信息,请参阅POM 参考文档Xpp3DomUtils

报告集

表示一组用于生成它们的报告和配置。

元素 类型 描述
ID 细绳 此报告集的唯一 ID,在 POM 继承和配置文件注入期间用于合并报告集。
默认值为默认值
报告/报告* 列表<字符串> (很多)应该从这个集合生成的来自这个插件的报告列表。
遗传 细绳 是否应将任何配置传播到子 POM。注意:虽然出于技术原因,该字段的类型是 String,但语义类型实际上是 Boolean。默认值为 true
配置 DOM

配置为 DOM 对象。

默认情况下,每个元素内容都会被修剪,但从 Maven 3.1.0 开始,您可以将xml:space="preserve"添加到要保留空白的元素中。

您可以通过向配置元素的子元素添加combine.childrencombine.self属性来控制子 POM 如何从父 POM 继承配置:

  • combine.children:可用值是merge(默认)和append
  • combine.self:可用值是merge(默认)和override

有关详细信息,请参阅POM 参考文档Xpp3DomUtils

轮廓

对基于环境参数或命令行参数激活的构建过程的修改。

元素 类型 描述
ID 细绳 此构建配置文件的标识符。这用于命令行激活,并标识要合并的配置文件。
默认值为默认值
激活 激活 将自动触发包含此配置文件的条件逻辑。
建造 构建基础 构建项目所需的信息。
模块/模块* 列表<字符串> (许多)作为该项目的一部分构建的模块(有时称为子项目)。列出的每个模块都是包含该模块的目录的相对路径。为了与从父级计算默认 url 的方式保持一致,建议模块名称与工件 ID 匹配。
分销管理 分销管理 项目的分发信息,可以将站点和工件分别部署到远程 Web 服务器和存储库。
属性/=* 特性 (许多)可以在整个 POM 中用作替代的属性,如果启用,则用作资源中的过滤器。格式为 <name>value</name>
依赖管理 依赖管理 继承自此的项目的默认依赖项信息。本节中的依赖关系不会立即解决。相反,当派生自此的 POM 声明由匹配的 groupId 和 artifactId 描述的依赖项时,如果尚未指定此部分中的版本和其他值,则它们将用于该依赖项。
依赖/依赖* 列表<依赖> (很多)该元素描述了与项目相关的所有依赖项。这些依赖项用于在构建过程中为您的项目构建类路径。它们会自动从该项目中定义的存储库中下载。有关更多信息,请参阅 依赖机制
存储库/存储库* 列表<存储库> (许多)用于发现依赖项和扩展的远程存储库列表。
pluginRepositories/ pluginRepository * 列表<存储库> (许多)用于发现构建和报告插件的远程存储库列表。
报告 DOM 已弃用。现在被 Maven 忽略。
报告 报告 此元素包括用于在 Maven 生成的站点上生成报告的报告插件规范。这些报告将在用户执行 mvn site时运行。所有报告都将包含在导航栏中以供浏览。

激活

构建运行时环境中将触发自动包含构建配置文件的条件。可以定义多个条件,必须全部满足才能激活配置文件。

元素 类型 描述
默认激活 布尔值 如果设置为 true,则此配置文件将处于活动状态,除非使用命令行 -P 选项或该配置文件的激活器之一激活此 pom 中的另一个配置文件。
默认值为false
jdk 细绳 指定在检测到匹配的 JDK 时激活此配置文件。例如, 1.4仅在 1.4 版本的 JDK 上激活,而 !1.4匹配任何不是 1.4 版本的 JDK。也支持范围: 当 JDK 最低为 1.5 时激活[1.5,) 。
操作系统 激活操作系统 指定在检测到匹配的操作系统属性时激活此配置文件。
财产 激活属性 指定在指定此系统属性时将激活此配置文件。
文件 激活文件 指定将根据文件的存在激活此配置文件。

操作系统

这是一个激活器,它将检测操作系统的属性以激活其配置文件。

元素 类型 描述
姓名 细绳 用于激活配置文件的操作系统的名称。这必须与 ${os.name} Java 属性完全匹配,例如 Windows XP
家庭 细绳 用于激活配置文件的一般操作系统系列,例如 windowsunix
细绳 用于激活配置文件的操作系统架构。
版本 细绳 用于激活配置文件的操作系统版本。

财产

这是用于激活配置文件的属性规范。如果 value 字段为空,则命名属性的存在将激活配置文件,否则它也会对属性值进行区分大小写的匹配。

元素 类型 描述
姓名 细绳 用于激活配置文件的属性名称。
价值 细绳 激活配置文件所需的属性值。

文件

这是用于激活配置文件的文件规范。缺少的 值是需要存在的文件的位置,如果不存在,配置文件将被激活。另一方面, exists将测试文件是否存在,如果存在,则激活配置文件。
这些文件规范的变量插值仅限于 ${basedir}、系统属性和请求属性。

元素 类型 描述
失踪 细绳 激活配置文件必须缺少的文件的名称。
存在 细绳 激活配置文件必须存在的文件的名称。

建造

构建的一般信息。

元素 类型 描述
默认目标 细绳 当没有为项目指定时执行的默认目标(或 Maven 2 中的阶段)。请注意,在多模块构建的情况下,只有顶级项目的默认目标是相关的,即忽略子模块的默认目标。从 Maven 3 开始,多个目标/阶段可以用空格分隔。
资源/资源* 列表<资源> (很多)该元素描述所有类路径资源,例如与项目关联的属性文件。这些资源通常包含在最终包中。默认值为 src/main/resources
测试资源/测试资源* 列表<资源> (很多)这个元素描述了所有的类路径资源,例如与项目的单元测试相关的属性文件。默认值为 src/test/resources
目录 细绳 放置构建生成的所有文件的目录。默认值为 目标
最终名称 细绳 将调用生成的工件的文件名(不包括扩展名,并且没有路径信息)。默认值为 ${artifactId}-${version}
过滤器/过滤器* 列表<字符串> (很多)启用过滤时使用的过滤器属性文件列表。
插件管理 插件管理 默认插件信息可供从该项目派生的项目参考。除非被引用,否则此插件配置不会被解析或绑定到生命周期。给定插件的任何本地配置都将在此处覆盖插件的整个定义。
插件/插件* 列表<插件> (很多)要使用的插件列表。