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 描述符檔案中列出哪些組態和依賴。

您可以透過提供 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)

建立要包含在發佈中的自訂 IvyArtifact。<關係artifact 方法可以接受各種輸入

artifact(source, config)

建立要包含在發佈中的 IvyArtifact,並由相關的 action 組態。第一個參數用於建立自訂產出物並將其新增至發佈,如同 IvyPublication.artifact(java.lang.Object)。然後使用提供的 action 組態建立的 IvyArtifact。此方法也接受組態 action 作為 closure 參數,透過類型強制轉換。

configurations(config)

定義一些應包含在已發佈 Ivy 模組描述符檔案中的 IvyConfiguration。以下範例示範如何新增 "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 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,並由相關的 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)

定義一些應包含在已發佈 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 發佈的相容性警告。當使用無法完全對應到 Ivy XML 的 Gradle 功能時,會發出警告。

void suppressIvyMetadataWarningsFor(String variantName)

針對指定的變體,靜止 Ivy 發佈的相容性警告。當使用無法完全對應到 Ivy XML 的 Gradle 功能時,會發出警告。