常春藤出版社

API文档:IvyPublication

AnIvyPublication是 Gradle 如何将 Ivy 格式的内容发布到 Ivy 存储库的表示/配置。您publishing.publications可以通过提供IvyPublication类型来 直接将命名的 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 描述符文件中列出哪些配置和依赖项。

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

要将其他工件添加到已发布的集合中,请使用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)

发布带有添加的源 jar 和自定义模块描述的 java 组件的示例

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)

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

descriptor(configure)

配置将发布的描述符。

from(component)

提供应发布的软件组件。

suppressAllIvyMetadataWarnings()

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

suppressIvyMetadataWarningsFor(variantName)

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

脚本块

无脚本块

物业详情

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 artifactObject来源)

IvyArtifact创建要包含在出版物中的自定义。该artifact方法可以采用多种输入:

  • 一个PublishArtifact例子。名称、类型、扩展名和分类器值取自提供的实例。
  • 一个AbstractArchiveTask例子。名称、类型、扩展名和分类器值取自提供的实例。
  • File任何可以通过方法解决的事情Project.file(java.lang.Object)。名称、扩展名和分类器值是从文件名中插入的。
  • 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 artifactObject来源,配置)Action<? super IvyArtifact>

创建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>

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

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

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

void descriptor(配置)Action<? super IvyModuleDescriptorSpec>

配置将发布的描述符。

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

void fromSoftwareComponent成分)

提供应发布的软件组件。

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

目前支持 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 出版物的所有兼容性警告。当使用无法完全映射到 Ivy xml 的 Gradle 功能时,会发出警告。

void suppressIvyMetadataWarningsFor(String变体名称)

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