@TaskAction
  public void doGenerate() {
    XmlTransformer xmlTransformer = new XmlTransformer();
    Action<? super XmlProvider> xmlAction = getXmlAction();
    if (xmlAction != null) {
      xmlTransformer.addAction(xmlAction);
    }

    IvyModuleDescriptorInternal descriptorInternal = toIvyModuleDescriptorInternal(getDescriptor());

    ModuleDescriptorConverter moduleDescriptorConverter =
        publicationServices.getDescriptorFileModuleConverter();
    ModuleDescriptor moduleDescriptor =
        moduleDescriptorConverter.convert(
            descriptorInternal.getConfigurations(), descriptorInternal.getModule());
    IvyModuleDescriptorWriter ivyModuleDescriptorWriter =
        publicationServices.getIvyModuleDescriptorWriter();
    ivyModuleDescriptorWriter.write(moduleDescriptor, getDestination(), xmlTransformer);
  }