# Interface IvyModuleDescriptorSpec

public interface IvyModuleDescriptorSpec
The descriptor of any Ivy publication.

Corresponds to the XML version of the Ivy Module Descriptor.

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 configuration methods exposed by this class, e.g. `description(Action)`.

Since:
  1.3

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `author(Action<? super IvyModuleDescriptorAuthor> action)`
  Creates, configures and adds an author to this publication.
  `void`
  `description(Action<? super IvyModuleDescriptorDescription> action)`
  Configures the description for this publication.
  `void`
  `extraInfo(String namespace, String elementName, String value)`
  Adds a new extra info element to the publication
  `@Nullable String`
  `getBranch()`
  Returns the branch for this publication
  `IvyExtraInfoSpec`
  `getExtraInfo()`
  Returns the extra info element spec for this publication
  `@Nullable String`
  `getStatus()`
  Returns the status for this publication.
  `void`
  `license(Action<? super IvyModuleDescriptorLicense> action)`
  Creates, configures and adds a license to this publication.
  `void`
  `setBranch(@Nullable String branch)`
  Sets the branch for this publication
  `void`
  `setStatus(@Nullable String status)`
  Sets the status for this publication.
  `void`
  `withXml(Action<? super XmlProvider> action)`
  Allow configuration of the descriptor, after it has been generated according to the input data.

- ## Method Details

  - ### withXml

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

        plugins {
            id 'ivy-publish'
        }

        publishing {
          publications {
            ivy(IvyPublication) {
              descriptor {
                withXml {
                  asNode().dependencies.dependency.find { it.@org == "junit" }.@rev = "4.10"
                }
              }
            }
          }
        }

    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 Ivy Module Descriptor reference.

    Parameters:
      `action` - The configuration action.
    See Also:
      - `IvyPublication`
      - `XmlProvider`

  - ### getStatus

    @Nullable String getStatus()
    Returns the status for this publication.

  - ### setStatus

    void setStatus(@Nullable String status)
    Sets the status for this publication.

  - ### getBranch

    @Nullable String getBranch()
    Returns the branch for this publication

  - ### setBranch

    void setBranch(@Nullable String branch)
    Sets the branch for this publication

  - ### getExtraInfo

    IvyExtraInfoSpec getExtraInfo()
    Returns the extra info element spec for this publication

  - ### extraInfo

    void extraInfo(String namespace, String elementName, String value)
    Adds a new extra info element to the publication

  - ### license

    void license(Action<? super IvyModuleDescriptorLicense> action)
    Creates, configures and adds a license to this publication.
    Since:
      4.8

  - ### author

    void author(Action<? super IvyModuleDescriptorAuthor> action)
    Creates, configures and adds an author to this publication.
    Since:
      4.8

  - ### description

    void description(Action<? super IvyModuleDescriptorDescription> action)
    Configures the description for this publication.
    Since:
      4.8