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 描述符檔案中列出哪些組態和依賴。
您可以透過提供 Closure 給 IvyPublication.configurations(org.gradle.api.Action)
方法,將組態新增至產生的 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) | 建立要包含在發佈中的自訂 |
artifact(source, config) | 建立要包含在發佈中的 |
configurations(config) | 定義一些應包含在已發佈 Ivy 模組描述符檔案中的 |
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
source)
建立要包含在發佈中的自訂 IvyArtifact
。<關係artifact
方法可以接受各種輸入
- 一個
PublishArtifact
實例。名稱、類型、副檔名和分類器值取自提供的實例。 - 一個
AbstractArchiveTask
實例。名稱、類型、副檔名和分類器值取自提供的實例。 - 任何可以透過
Project.file(java.lang.Object)
方法解析為File
的項目。名稱、副檔名和分類器值從檔案名稱中內插。 - 一個
Map
,其中包含可以解析為任何其他輸入類型 (包括檔案) 的 'source' 項目。此 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
>建立要包含在發佈中的 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)
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)
IvyModuleDescriptorSpec
>組態將發佈的描述符。
描述符 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
suppressIvyMetadataWarningsFor
(String
variantName)
針對指定的變體,靜止 Ivy 發佈的相容性警告。當使用無法完全對應到 Ivy XML 的 Gradle 功能時,會發出警告。