| API文档: | IvyPublication |
|---|
AnIvyPublication是 Gradle 如何将 Ivy 格式的内容发布到 Ivy 存储库的表示/配置。您publishing.publications可以通过提供IvyPublication类型来
直接将命名的 Ivy 发布添加到项目的容器中。
publishing {
publications {
myPublicationName(IvyPublication) {
// Configure the publication here
}
}
}
标识出版物属性的 Ivy 模块映射如下:
module-project.nameorganisation-project.grouprevision-project.versionstatus-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)。
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) |
|
artifact(source, config) | 创建 |
configurations(config) | 定义一些 |
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 artifact(Object来源)
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 artifact(Object来源,配置)Action<? super IvyArtifact>
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>
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>
Action<? super IvyModuleDescriptorSpec>配置将发布的描述符。
可以使用该IvyModuleDescriptorSpec.withXml(org.gradle.api.Action)方法修改描述符XML。
void from(SoftwareComponent成分)
提供应发布的软件组件。
- 组件声明的任何工件都将包含在发布中。
- 组件声明的依赖项将包含在已发布的元数据中。
目前支持 2 种类型的组件:“components.java”(由 JavaPlugin 添加)和“components.web”(由 WarPlugin 添加)。对于任何单独的 IvyPublication,只能以这种方式提供单个组件。以下示例演示了如何将“java”组件发布到ivy存储库。
plugins {
id 'java'
id 'ivy-publish'
}
publishing {
publications {
ivy(IvyPublication) {
from components.java
}
}
}
void suppressIvyMetadataWarningsFor(String变体名称)
消除指定变体的 Ivy 发布的兼容性警告。当使用无法完全映射到 Ivy xml 的 Gradle 功能时,会发出警告。