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) | 创建一个自定义的 |
artifact(source, config) | 创建一个 |
configurations(config) | 定义一些应包含在已发布 ivy 模块描述符文件中的 |
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)
Action
<? super IvyArtifact
>创建一个 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)
Action
<? super IvyConfigurationContainer
>定义一些应包含在已发布 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)
Action
<? super IvyModuleDescriptorSpec
>配置将要发布的描述符。
描述符 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
suppressIvyMetadataWarningsFor
(String
variantName)
静默指定 variant 的 Ivy 发布项的兼容性警告。当使用无法完全映射到 Ivy xml 的 Gradle 特性时,会发出警告。