首页 > 解决方案 > 如何在 Gradle 中发布特定的工件子集

问题描述

嗨,我继承了一个非常糟糕的项目。它使用 gradle 但仍在使用 uploadArchives。它当前的工件定义是这样的

artifacts {

if (someCondition) {
    {
        archives archive1
    }
    
if (someOtherCondition) {
        archives archive2
    }

我想切换到 ivy/maven 发布,我现在正在使用 ivy,因为我在其他 gradle 项目中对它有一点经验(最少)。

这个项目有很多问题,但我想说有一个构建可以专门调用的名为 publishArchive1 或 publishArchive2 的任务。也许我在搜索错误的术语,但我无法弄清楚。

标签: gradle

解决方案


您正在寻找Maven 发布插件。

您可以创建单个发布,然后有条件地将工件添加到该发布中,该发布应与您在示例中提供的内容保持一致。

publishing {
    publications {
        maven(MavenPublication) {
            // Configure other options here
            // ...
            if (someCondition) {
                from(someTaskWithOutputs)
            }
            if (someCondition) {
                from(someOtherTaskWithOutputs)
            }
        }
    }
}

然后只需调用./gradlew publish它将发布到所有已定义的存储库。有关详细信息,请参阅链接指南


推荐阅读