IvyPublication

API 文档IvyPublication

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

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 描述符文件。 这可以使用 IvyModuleDescriptorSpec.withXml(org.gradle.api.Action) 方法完成,通常通过传递给 IvyPublication.descriptor(org.gradle.api.Action) 方法的 Closure 来实现。

// 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 以包含在发布中,并通过关联的操作进行配置。 第一个参数用于创建自定义工件并将其添加到发布中,如 IvyPublication.artifact(java.lang.Object) 所示。 然后使用提供的操作配置创建的 IvyArtifact。 此方法还接受配置操作作为闭包参数,通过类型强制转换。

configurations(config)

定义一些应包含在已发布的 ivy 模块描述符文件中的 IvyConfiguration。 以下示例演示如何添加 “testCompile” 配置和扩展它的 “testRuntime” 配置。

descriptor(configure)

配置将要发布的描述符。

from(component)

提供应发布的软件组件。

suppressAllIvyMetadataWarnings()

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

suppressIvyMetadataWarningsFor(variantName)

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

脚本块

没有脚本块

属性详情

IvyArtifactSet artifacts

此发布的所有工件的完整集合。

设置此属性将清除任何先前添加的工件,并从指定的源创建工件。 每个提供的源都按照 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 实例。 名称、类型、扩展名和分类器值取自提供的实例。
  • 一个 AbstractArchiveTask 实例。 名称、类型、扩展名和分类器值取自提供的实例。
  • 任何可以通过 Project.file(java.lang.Object) 方法解析为 File 的内容。 名称、扩展名和分类器值从文件名插值。
  • 一个 Map,其中包含一个 'source' 条目,可以解析为任何其他输入类型,包括文件。 此映射可以包含其他属性,以进一步配置构造的工件。

以下示例演示了添加各种自定义工件。

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 以包含在发布中,并通过关联的操作进行配置。 第一个参数用于创建自定义工件并将其添加到发布中,如 IvyPublication.artifact(java.lang.Object) 所示。 然后使用提供的操作配置创建的 IvyArtifact。 此方法还接受配置操作作为闭包参数,通过类型强制转换。

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)

提供应发布的软件组件。

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

目前支持 2 种类型的组件:“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 发布的兼容性警告。 当使用的 Gradle 功能无法完全映射到 Ivy xml 时,会发出警告。

void suppressIvyMetadataWarningsFor(String variantName)

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