# IvyModuleDescriptorSpec

API Documentation: | `IvyModuleDescriptorSpec`

The descriptor of any Ivy publication.

Corresponds to the XML version of the Ivy Module Descriptor.

The `IvyModuleDescriptorSpec.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. `IvyModuleDescriptorSpec.description(org.gradle.api.Action)`.

### Properties

Property | Description
`branch` | The branch for this publication
`extraInfo` | The extra info element spec for this publication
`status` | The status for this publication.

### Methods

Method | Description
`author(action)` | Creates, configures and adds an author to this publication.
`description(action)` | Configures the description for this publication.
`extraInfo(namespace, elementName, value)` | Adds a new extra info element to the publication
`license(action)` | Creates, configures and adds a license to this publication.
`withXml(action)` | Allow configuration of the descriptor, after it has been generated according to the input data.

### Script blocks

No script blocks

### Property details

#### `String` `branch`

The branch for this publication

#### `IvyExtraInfoSpec` `extraInfo` (read-only)

The extra info element spec for this publication

#### `String` `status`

The status for this publication.

### Method details

#### `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

#### `void` `license`(``Action`<? super `IvyModuleDescriptorLicense`>` action)

Creates, configures and adds a license to this publication.

#### `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.