IvyPublication

API 文档IvyPublication

一个 IvyPublication 是 Gradle 如何以 Ivy 格式发布内容到 Ivy 仓库的表示/配置。通过提供 IvyPublication 作为类型,可以直接向项目的 publishing.publications 容器添加一个命名 Ivy 发布项。

publishing {
  publications {
    myPublicationName(IvyPublication) {
      // Configure the publication here
    }
  }
}

该发布项的 Ivy 模块标识属性映射如下:

  • module - project.name
  • organisation - project.group
  • revision - project.version
  • status - project.status

对于某些常见用例,通常只需要指定要发布的组件,可以使用 (IvyPublication.from(org.gradle.api.component.SoftwareComponent)。已发布的组件用于确定要发布哪些制品,以及应在生成的 ivy 描述符文件中列出哪些配置和依赖项。

通过向 IvyPublication.configurations(org.gradle.api.Action) 方法提供 Closure,可以将配置添加到生成的 ivy 描述符文件。

要向已发布的制品集中添加额外的制品,请使用 IvyPublication.artifact(java.lang.Object)IvyPublication.artifact(java.lang.Object, org.gradle.api.Action) 方法。您也可以使用 IvyPublication.setArtifacts(java.lang.Iterable) 完全替换已发布的制品集。这些方法共同为您提供了对要发布的制品的完全控制。

此外,IvyModuleDescriptorSpec 提供了配置方法,用于自定义要在 Ivy 模块描述符中发布的许可证、作者和描述。

对于发布的任何其他调整,可以在发布之前修改生成的 Ivy 描述符文件。这通常通过传递给 IvyPublication.descriptor(org.gradle.api.Action) 方法的 Closure,使用 IvyModuleDescriptorSpec.withXml(org.gradle.api.Action) 方法完成。

// Example of publishing a java component with an added source jar and custom module description
plugins {
    id 'java'
    id 'ivy-publish'
}

task sourceJar(type: Jar) {
  from sourceSets.main.allJava
}

publishing {
  publications {
    myPublication(IvyPublication) {
      from components.java
      artifact(sourceJar) {
        type = "source"
        extension = "src.jar"
        conf = "runtime"
      }
      descriptor {
        license {
          name = "Custom License"
        }
        author {
          name = "Custom Name"
        }
        description {
          text = "Custom Description"
        }
      }
    }
  }
}

属性

属性描述
artifacts

该发布项的完整制品集。

configurations

该发布项的完整配置集。

descriptor

将要发布的模块描述符。

module

该发布项的模块。

organisation

该发布项的组织。

revision

该发布项的修订版本。

方法

方法描述
artifact(source)

创建一个自定义的 IvyArtifact 以包含在发布项中。artifact 方法可以接受多种输入:

artifact(source, config)

创建一个 IvyArtifact 以包含在发布项中,并由关联的 action 进行配置。第一个参数用于创建自定义制品并将其添加到发布项,如 IvyPublication.artifact(java.lang.Object) 所示。然后使用提供的 action 配置创建的 IvyArtifact。此方法也接受将配置 action 作为 Closure 参数,通过类型强制转换。

configurations(config)

定义一些应包含在已发布 ivy 模块描述符文件中的 IvyConfiguration。以下示例演示了如何添加 "testCompile" 配置,以及继承该配置的 "testRuntime" 配置。

descriptor(configure)

配置将要发布的描述符。

from(component)

提供应发布的软件组件。

suppressAllIvyMetadataWarnings()

静默 Ivy 发布项的所有兼容性警告。当使用无法完全映射到 Ivy xml 的 Gradle 特性时,会发出警告。

suppressIvyMetadataWarningsFor(variantName)

静默指定 variant 的 Ivy 发布项的兼容性警告。当使用无法完全映射到 Ivy xml 的 Gradle 特性时,会发出警告。

脚本块

无脚本块

属性详情

IvyArtifactSet artifacts

该发布项的完整制品集。

设置此属性将清除之前添加的所有制品,并从指定的 source 创建制品。提供的每个 source 都根据 IvyPublication.artifact(java.lang.Object) 进行解释。例如,要排除组件声明的依赖项,并转而使用一组自定义制品:

plugins {
    id 'java'
    id 'ivy-publish'
}

task sourceJar(type: Jar) {
  archiveClassifier = "source"
}

publishing {
  publications {
    ivy(IvyPublication) {
      from components.java
      artifacts = ["my-custom-jar.jar", sourceJar]
    }
  }
}

IvyConfigurationContainer configurations (只读)

该发布项的完整配置集。

IvyModuleDescriptorSpec descriptor (只读)

将要发布的模块描述符。

String module

该发布项的模块。

String organisation

该发布项的组织。

String revision

该发布项的修订版本。

方法详情

IvyArtifact artifact(Object source)

创建一个自定义的 IvyArtifact 以包含在发布项中。artifact 方法可以接受多种输入:

  • 一个 PublishArtifact 实例。名称、类型、扩展名和 classifier 值取自提供的实例。
  • 一个 AbstractArchiveTask 实例。名称、类型、扩展名和 classifier 值取自提供的实例。
  • 任何可以通过 Project.file(java.lang.Object) 方法解析为 File 的内容。名称、扩展名和 classifier 值从文件名中推断。
  • 一个包含 'source' 条目的 Map,该条目可以解析为任何其他输入类型,包括文件。此 map 可以包含其他属性以进一步配置构建的制品。

以下示例演示了如何添加各种自定义制品。

plugins {
    id 'ivy-publish'
}

task sourceJar(type: Jar) {
  archiveClassifier = "source"
}

task genDocs {
  doLast {
    // Generate 'my-docs-file.htm'
  }
}

publishing {
  publications {
    ivy(IvyPublication) {
      artifact sourceJar // Publish the output of the sourceJar task
      artifact 'my-file-name.jar' // Publish a file created outside of the build
      artifact source: 'my-docs-file.htm', classifier: 'docs', extension: 'html', builtBy: genDocs // Publish a file generated by the 'genDocs' task
    }
  }
}

IvyArtifact artifact(Object source, Action<? super IvyArtifact> config)

创建一个 IvyArtifact 以包含在发布项中,并由关联的 action 进行配置。第一个参数用于创建自定义制品并将其添加到发布项,如 IvyPublication.artifact(java.lang.Object) 所示。然后使用提供的 action 配置创建的 IvyArtifact。此方法也接受将配置 action 作为 Closure 参数,通过类型强制转换。

plugins {
    id 'ivy-publish'
}

task sourceJar(type: Jar) {
  archiveClassifier = "source"
}

task genDocs {
  doLast {
    // Generate 'my-docs-file.htm'
  }
}

publishing {
  publications {
    ivy(IvyPublication) {
      artifact(sourceJar) {
        // These values will be used instead of the values from the task. The task values will not be updated.
        classifier = "src"
        extension = "zip"
        conf = "runtime->default"
      }
      artifact("my-docs-file.htm") {
        type = "documentation"
        extension = "html"
        builtBy genDocs
      }
    }
  }
}

void configurations(Action<? super IvyConfigurationContainer> config)

定义一些应包含在已发布 ivy 模块描述符文件中的 IvyConfiguration。以下示例演示了如何添加 "testCompile" 配置,以及继承该配置的 "testRuntime" 配置。

plugins {
    id 'java'
    id 'ivy-publish'
}

publishing {
  publications {
    ivy(IvyPublication) {
      configurations {
          testCompile {}
          testRuntime {
              extend "testCompile"
          }
      }
    }
  }
}

void descriptor(Action<? super IvyModuleDescriptorSpec> configure)

配置将要发布的描述符。

描述符 XML 可以通过使用 IvyModuleDescriptorSpec.withXml(org.gradle.api.Action) 方法进行修改。

void from(SoftwareComponent component)

提供应发布的软件组件。

  • 组件声明的任何制品都将包含在发布项中。
  • 组件声明的依赖项将包含在发布的元数据中。

目前支持两种类型的组件:'components.java'(由 JavaPlugin 添加)和 'components.web'(由 WarPlugin 添加)。对于任何单独的 IvyPublication,只能以这种方式提供一个组件。以下示例演示了如何将 'java' 组件发布到 ivy 仓库。

plugins {
    id 'java'
    id 'ivy-publish'
}

publishing {
  publications {
    ivy(IvyPublication) {
      from components.java
    }
  }
}

void suppressAllIvyMetadataWarnings()

静默 Ivy 发布项的所有兼容性警告。当使用无法完全映射到 Ivy xml 的 Gradle 特性时,会发出警告。

void suppressIvyMetadataWarningsFor(String variantName)

静默指定 variant 的 Ivy 发布项的兼容性警告。当使用无法完全映射到 Ivy xml 的 Gradle 特性时,会发出警告。