# Interface MavenPom

public interface MavenPom
The POM for a Maven publication.

The `withXml(org.gradle.api.Action)` method can be used to modify the descriptor after it has been generated according to the publication data. However, the preferred way to customize the project information to be published is to use the dedicated properties exposed by this class, e.g. `getDescription()`. Please refer to the official POM Reference for detailed information about the individual properties.

Since:
  1.4

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `ciManagement(Action<? super MavenPomCiManagement> action)`
  Configures the CI management for the publication represented by this POM.
  `void`
  `contributors(Action<? super MavenPomContributorSpec> action)`
  Configures the contributors for the publication represented by this POM.
  `void`
  `developers(Action<? super MavenPomDeveloperSpec> action)`
  Configures the developers for the publication represented by this POM.
  `void`
  `distributionManagement(Action<? super MavenPomDistributionManagement> action)`
  Configures the distribution management for the publication represented by this POM.
  `Property<String>`
  `getDescription()`
  A short, human-readable description for the publication represented by this POM.
  `Property<String>`
  `getInceptionYear()`
  The year the project producing the publication represented by this POM was first created.
  `Property<String>`
  `getName()`
  The name for the publication represented by this POM.
  `String`
  `getPackaging()`
  Returns the packaging (for example: jar, war) for the publication represented by this POM.
  `MapProperty<String,String>`
  `getProperties()`
  Returns the properties for the publication represented by this POM.
  `Property<String>`
  `getUrl()`
  The URL of the home page for the project producing the publication represented by this POM.
  `void`
  `issueManagement(Action<? super MavenPomIssueManagement> action)`
  Configures the issue management for the publication represented by this POM.
  `void`
  `licenses(Action<? super MavenPomLicenseSpec> action)`
  Configures the licenses for the publication represented by this POM.
  `void`
  `mailingLists(Action<? super MavenPomMailingListSpec> action)`
  Configures the mailing lists for the publication represented by this POM.
  `void`
  `organization(Action<? super MavenPomOrganization> action)`
  Configures the organization for the publication represented by this POM.
  `void`
  `scm(Action<? super MavenPomScm> action)`
  Configures the SCM (source control management) for the publication represented by this POM.
  `void`
  `setPackaging(String packaging)`
  Sets the packaging for the publication represented by this POM.
  `void`
  `withXml(Action<? super XmlProvider> action)`
  Allows configuration of the POM, after it has been generated according to the input data.

- ## Method Details

  - ### getPackaging

    @Input String getPackaging()
    Returns the packaging (for example: jar, war) for the publication represented by this POM.
    Since:
      1.7

  - ### setPackaging

    void setPackaging(String packaging)
    Sets the packaging for the publication represented by this POM.
    Since:
      1.7

  - ### getName

    @Input @Optional Property<String> getName()
    The name for the publication represented by this POM.
    Since:
      4.8

  - ### getDescription

    @Input @Optional Property<String> getDescription()
    A short, human-readable description for the publication represented by this POM.
    Since:
      4.8

  - ### getUrl

    @Input @Optional Property<String> getUrl()
    The URL of the home page for the project producing the publication represented by this POM.
    Since:
      4.8

  - ### getInceptionYear

    @Input @Optional Property<String> getInceptionYear()
    The year the project producing the publication represented by this POM was first created.
    Since:
      4.8

  - ### licenses

    void licenses(Action<? super MavenPomLicenseSpec> action)
    Configures the licenses for the publication represented by this POM.
    Since:
      4.8

  - ### organization

    void organization(Action<? super MavenPomOrganization> action)
    Configures the organization for the publication represented by this POM.
    Since:
      4.8

  - ### developers

    void developers(Action<? super MavenPomDeveloperSpec> action)
    Configures the developers for the publication represented by this POM.
    Since:
      4.8

  - ### contributors

    void contributors(Action<? super MavenPomContributorSpec> action)
    Configures the contributors for the publication represented by this POM.
    Since:
      4.8

  - ### scm

    void scm(Action<? super MavenPomScm> action)
    Configures the SCM (source control management) for the publication represented by this POM.
    Since:
      4.8

  - ### issueManagement

    void issueManagement(Action<? super MavenPomIssueManagement> action)
    Configures the issue management for the publication represented by this POM.
    Since:
      4.8

  - ### ciManagement

    void ciManagement(Action<? super MavenPomCiManagement> action)
    Configures the CI management for the publication represented by this POM.
    Since:
      4.8

  - ### distributionManagement

    void distributionManagement(Action<? super MavenPomDistributionManagement> action)
    Configures the distribution management for the publication represented by this POM.
    Since:
      4.8

  - ### mailingLists

    void mailingLists(Action<? super MavenPomMailingListSpec> action)
    Configures the mailing lists for the publication represented by this POM.
    Since:
      4.8

  - ### getProperties

    @Input MapProperty<String,String> getProperties()
    Returns the properties for the publication represented by this POM.
    Since:
      5.3

  - ### withXml

    void withXml(Action<? super XmlProvider> action)
    Allows configuration of the POM, after it has been generated according to the input data.

        plugins {
            id 'maven-publish'
        }

        publishing {
          publications {
            maven(MavenPublication) {
              pom.withXml {
                asNode().appendNode('properties').appendNode('my-property', 'my-value')
              }
            }
          }
        }

    Note that due to Gradle's internal type conversion system, you can pass a Groovy closure to this method and it will be automatically converted to an `Action`.

    Each action/closure passed to this method will be stored as a callback, and executed when the publication that this descriptor is attached to is published.

    For details on the structure of the XML to be modified, see the POM reference.

    Parameters:
      `action` - The configuration action.
    Since:
      1.4
    See Also:
      - `MavenPublication`
      - `XmlProvider`