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

父母

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

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

组织

指定产生此项目的组织。

元素 类型 描述
name String 组织的全名。
url String 组织主页的 URL。

执照

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

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

开发商

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

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

贡献者

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

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

邮件列表

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

元素 类型 描述
name String 邮寄名单的名称。
subscribe String 可用于订阅邮件列表的电子邮件地址或链接。如果这是一个电子邮件地址, mailto:则会在创建文档时自动创建一个链接。
unsubscribe String 可用于取消订阅邮件列表的电子邮件地址或链接。如果这是一个电子邮件地址, mailto:则会在创建文档时自动创建一个链接。
post String 可用于发布到邮件列表的电子邮件地址或链接。如果这是一个电子邮件地址, mailto:则会在创建文档时自动创建一个链接。
archive String 指向您可以浏览邮件列表存档的 URL 的链接。
otherArchives/otherArchive* List<String> (很多)指向备用 URL 的链接,您可以在其中浏览列表存档。

先决条件

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

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

单片机

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

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

问题管理

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

元素 类型 描述
system String 问题管理系统的名称,例如 Bugzilla
url String 项目使用的问题管理系统的 URL。

企业管理

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

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

通知者

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

元素 类型 描述
type String 用于传递通知的机制。
默认值为mail
sendOnError boolean 是否发送错误通知。
默认值为true
sendOnFailure boolean 是否发送失败通知。
默认值为true
sendOnSuccess boolean 是否发送成功通知。
默认值为true
sendOnWarning boolean 是否发送警告通知。
默认值为true
address String 已弃用。将通知发送到哪里 - 例如电子邮件地址。
configuration/key=value* Properties (许多)特定于此通知程序的扩展配置在这里。

分销管理

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

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

存储库

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

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

发布

下载政策。

元素 类型 描述
enabled String 是否使用此存储库来下载此类工件。注意:虽然此字段的类型是 String出于技术原因,但语义类型实际上是 Boolean. 默认值为 true
updatePolicy String 下载更新的频率 - 可以是 always, daily(默认)、 interval:XXX(以分钟为单位)或 never(仅当本地不存在时)。
checksumPolicy String 当工件校验和验证失败时该怎么办。有效值为 ignore, failwarn(默认值)。

快照

下载政策。

元素 类型 描述
enabled String 是否使用此存储库来下载此类工件。注意:虽然此字段的类型是 String出于技术原因,但语义类型实际上是 Boolean. 默认值为 true
updatePolicy String 下载更新的频率 - 可以是 always, daily(默认)、 interval:XXX(以分钟为单位)或 never(仅当本地不存在时)。
checksumPolicy String 当工件校验和验证失败时该怎么办。有效值为 ignore, failwarn(默认值)。

快照存储库

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

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

地点

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

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

搬迁

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

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

依赖管理

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

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

依赖

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

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

排除

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

元素 类型 描述
groupId String 要排除的项目的组 ID。
artifactId String 要排除的项目的工件 ID。

存储库

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

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

插件库

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

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

建造

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

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

延期

描述要使用的构建扩展。

元素 类型 描述
groupId String 扩展的工件的组 ID。
artifactId String 扩展的工件 ID。
version String 扩展的版本。

资源

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

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

测试资源

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

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

插件管理

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

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

插入

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

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

配置为 DOM 对象。

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

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

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

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

执行

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

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

配置为 DOM 对象。

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

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

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

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

报告

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

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

插入

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

元素 类型 描述
groupId String 存储库中报告插件的组 ID。
默认值为org.apache.maven.plugins
artifactId String 存储库中报告插件的工件 ID。
version String 要使用的报告插件的版本。从 Maven 3 开始,如果没有明确定义版本,则在 build/pluginsthen in 中 搜索版本build/pluginManagement
reportSets/reportSet* List<ReportSet> (许多)一组报告的多个规范,每个具有(可能)不同的配置。execution这是与构建中的一个平行的报告 。
inherited String 是否应将任何配置传播到子 POM。注意:虽然此字段的类型是 String出于技术原因,但语义类型实际上是 Boolean. 默认值为 true
configuration DOM

配置为 DOM 对象。

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

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

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

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

报告集

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

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

配置为 DOM 对象。

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

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

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

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

轮廓

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

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

激活

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

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

操作系统

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

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

财产

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

元素 类型 描述
name String 用于激活配置文件的属性名称。
value String 激活配置文件所需的属性值。

文件

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

元素 类型 描述
missing String 激活配置文件必须缺少的文件的名称。
exists String 激活配置文件必须存在的文件的名称。

建造

构建的一般信息。

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