---
# System prepended metadata

title: '`pom.xml`'
tags: [maven, java, xml]

---

# `pom.xml`

[TOC]

###### tags: `maven` `java` `xml`

---

## /project/modelVersion

## /project/parent

## /project/groupId

## /project/artifactId

## /project/version

## /project/packaging

## /project/name

## /project/description

## /project/url

The URL to the project's homepage. **Default value is**:

- `parent` value [+ path adjustment] + (`artifactId` or `project.directory` property),
- or just `parent` value if project's `child.project.url.inherit.append.path="false"`.

## /project/inceptionYear

## /project/organization

## /project/licenses

## /project/developers

## /project/contributors

## /project/mailingLists

## /project/prerequisites

## /project/modules

## /project/scm

## /project/issueManagement

## /project/ciManagement

## /project/distributionManagement

Distribution information for a project that enables deployment of the site and artifacts to remote web servers and repositories respectively.

> This elements describes all that pertains to distribution for a project. It is primarily used for deployment of artifacts and the site produced by the build.

### /project/distributionManagement/repository

Information needed to deploy the artifacts generated by the project to a remote repository.

> Repository contains the information needed for deploying to the remote repository.

### /project/distributionManagement/repository/uniqueVersion

Whether to assign snapshots a unique version comprised of the timestamp and build number, or to use the same version each time.

#### Type

`xs:boolean`

#### Default

`true`

### /project/distributionManagement/repository/releases

How to handle downloading of releases from this repository.

### /project/distributionManagement/repository/snapshots

How to handle downloading of snapshots from this repository.

### /project/distributionManagement/repository/id

A unique identifier for a repository. This is used to match the repository to configuration in the `settings.xml` file, for example. Furthermore, the identifier is used during POM inheritance and profile injection to detect repositories that should be merged.

#### Type

`xs:string`

### /project/distributionManagement/repository/name

Human readable name of the repository.

#### Type

`xs:string`

### /project/distributionManagement/repository/url

The url of the repository, in the form `protocol://hostname/path`.

#### Type

`xs:string`

### /project/distributionManagement/repository/layout

The type of layout this repository uses for locating and storing artifacts - can be `legacy` or `default`.

#### Type

`xs:string`

#### Default

`default`

### /project/distributionManagement/snapshotRepository

Information needed to deploy the artifacts generated by the project to a remote repository.

> Repository contains the information needed for deploying to the remote repository.

### /project/distributionManagement/snapshotRepository/uniqueVersion

Whether to assign snapshots a unique version comprised of the timestamp and build number, or to use the same version each time.

#### Type

`xs:boolean`

#### Default

`true`

### /project/distributionManagement/snapshotRepository/releases

How to handle downloading of releases from this repository.

### /project/distributionManagement/snapshotRepository/snapshots

How to handle downloading of snapshots from this repository.

### /project/distributionManagement/snapshotRepository/id

A unique identifier for a repository. This is used to match the repository to configuration in the `settings.xml` file, for example. Furthermore, the identifier is used during POM inheritance and profile injection to detect repositories that should be merged.

#### Type

`xs:string`

### /project/distributionManagement/snapshotRepository/name

Human readable name of the repository.

#### Type

`xs:string`

### /project/distributionManagement/snapshotRepository/url

The url of the repository, in the form `protocol://hostname/path`.

#### Type

`xs:string`

### /project/distributionManagement/snapshotRepository/layout

The type of layout this repository uses for locating and storing artifacts - can be `legacy` or `default`.

#### Type

`xs:string`

#### Default

`default`

### /project/distributionManagement/site

Information needed for deploying the web site of the project.

### /project/distributionManagement/downloadUrl

The URL of the project's download page. If not given users will be referred to the homepage given by `url`. This is given to assist in locating artifacts that are not in the repository due to licensing restrictions.

#### Type

`xs:string`

### /project/distributionManagement/relocation

Relocation information of the artifact if it has been moved to a new group ID and/or artifact ID.

### /project/distributionManagement/status

Gives the status of this artifact in the remote repository. This must not be set in your local project, as it is updated by tools placing it in the reposiory. Valid values are:

- `none` (default),
- `converted` (repository manager converted this from an Maven 1 POM),
- `partner` (directly synced from a partner Maven 2 repository),
- `deployed` (was deployed from a Maven 2 instance),
- `verified` (has been hand verified as correct and final).

#### Type

`xs:string`

## /project/properties

Properties that can be used throughout the POM as a substitution, and are used as filters in resources if enabled.  The format is `<name>value</name>`.

## /project/dependencyManagement

Default dependency information for projects that inherit from this one. 

The dependencies in this section are not immediately resolved. Instead, when a POM derived from this one declares a dependency described by a matching `groupId` and `artifactId`, the `version` and other values from this section are used for that dependency if they were not already specified.

> Section for management of default dependency information for use in a group of POMs.

### /project/dependencyManagement/dependencies

## /project/dependencies

## /project/repositories

## /project/pluginRepositories

## /project/build

Information required to build the project.

> The `<build/>` element contains informations required to build the project. Default values are defined in Super POM.

### /project/build/sourceDirectory

This element specifies a directory containing the source of the project. The generated build system will compile the sources from this directory when the project is built. The path given is relative to the project descriptor. The default value is `src/main/java`.

#### Type

`xs:string`

### /project/build/scriptSourceDirectory

This element specifies a directory containing the script sources of the project. This directory is meant to be different from the sourceDirectory, in that its contents will be copied to the output directory in most cases (since scripts are interpreted rather than compiled). The default value is `src/main/scripts`.

#### Type

`xs:string`

### /project/build/testSourceDirectory

This element specifies a directory containing the unit test source of the project. The generated build system will compile these directories when the project is being tested. The path given is relative to the project descriptor. The default value is `src/test/java`.

#### Type

`xs:string`

### /project/build/outputDirectory

The directory where compiled application classes are placed. The default value is `target/classes`.

#### Type

`xs:string`

### /project/build/testOutputDirectory

The directory where compiled test classes are placed. The default value is `target/test-classes`.

#### Type

`xs:string`

### /project/build/extensions

A set of build extensions to use from this project.

### /project/build/defaultGoal

The default goal (or phase in Maven 2) to execute when none is specified for the project. Note that in case of a multi-module build, only the default goal of the top-level project is relevant, i.e. the default goals of child modules are ignored. Since Maven 3, multiple goals/phases can be separated by whitespace.

#### Type

`xs:string`

### /project/build/resources

This element describes all of the classpath resources such as properties files associated with a project. These resources are often included in the final package. The default value is `src/main/resources`.

### /project/build/testResources

This element describes all of the classpath resources such as properties files associated with a project's unit tests. The default value is `src/test/resources`.

### /project/build/directory

The directory where all files generated by the build are placed. The default value is `target`.

#### Type

`xs:string`

### /project/build/finalName

The filename (excluding the extension, and with no path information) that the produced artifact will be called. The default value is `${artifactId}-${version}`.

#### Type

`xs:string`

### /project/build/filters

The list of filter properties files that are used when filtering is enabled.

### /project/build/pluginManagement

Default plugin information to be made available for reference by projects derived from this one. This plugin configuration will not be resolved or bound to the lifecycle unless referenced. Any local configuration for a given plugin will override the plugin's entire definition here.

### /project/build/plugins

The list of plugins to use.

## /project/reports

## /project/reporting

## /project/profiles
