Distribution Plugin 帮助构建作为项目分发的存档。分发存档通常包含可执行应用程序和其他支持文件,例如文档。

使用

要使用 Distribution Plugin,请在您的构建脚本中包含以下内容

build.gradle.kts
plugins {
    distribution
}
build.gradle
plugins {
    id 'distribution'
}

该插件向项目添加了一个名为 distributions 的扩展,其类型为 DistributionContainer。它还在 distributions 容器扩展中创建一个名为 main 的单个分发。如果您的构建只生成一个分发,您只需要配置此分发(或使用默认值)。

您可以运行 gradle distZip 将主分发打包为 ZIP,或运行 gradle distTar 创建 TAR 文件。要构建这两种类型的存档,只需运行 gradle assembleDist。这些文件将被创建在 layout.buildDirectory.dir("distributions/${project.name}-${project.version}.«ext»") 中。

您可以运行 gradle installDist 将未压缩的分发程序组装到 layout.buildDirectory.dir("install/${project.name}") 中。

任务

Distribution Plugin 向您的项目添加了许多任务,如下所示。

distZipZip

创建分发内容的 ZIP 存档。

distTarTask

创建分发内容的 TAR 存档。

assembleDistTask

依赖于: distTar, distZip

创建分发内容的 ZIP 和 TAR 存档。

installDistSync

组装分发内容并将其安装在当前机器上。

对于添加到项目中的每个额外分发,分发插件会添加以下任务,其中distributionName来自Distribution.getName()

distributionNameDistZipZip

创建分发内容的 ZIP 存档。

distributionNameDistTarTar

创建分发内容的 TAR 存档。

assembleDistributionNameDistTask

依赖于: distributionNameDistTar, distributionNameDistZip

创建分发内容的 ZIP 和 TAR 存档。

installDistributionNameDistSync

组装分发内容并将其安装在当前机器上。

以下示例创建一个custom分发,这将导致四个额外的任务被添加到项目中:customDistZipcustomDistTarassembleCustomDistinstallCustomDist

build.gradle.kts
distributions {
    create("custom") {
        // configure custom distribution
    }
}
build.gradle
distributions {
    custom {
        // configure custom distribution
    }
}

假设项目名称为myproject,版本为1.2,运行gradle customDistZip将生成一个名为myproject-custom-1.2.zip的 ZIP 文件。

运行gradle installCustomDist将把分发内容安装到layout.buildDirectory.dir("install/custom")中。

分发内容

src/$distribution.name/dist目录中的所有文件将自动包含在分发中。您可以通过配置容器中的一部分的Distribution对象来添加其他文件。

示例 3. 配置主分发
build.gradle.kts
distributions {
    main {
        distributionBaseName = "someName"
        distributionClassifier = "classifier"
        contents {
            from("src/readme")
        }
    }
}
build.gradle
distributions {
    main {
        distributionBaseName = 'someName'
        distributionClassifier = 'classifier'
        contents {
            from 'src/readme'
        }
    }
}

在上面的示例中,src/readme目录的内容将被包含在分发中(以及默认情况下添加的src/main/dist目录中的文件)。

distributionBaseNamedistributionClassifier属性也已更改。这将导致分发存档以不同的名称创建。

发布

可以使用 Ivy 发布插件Maven 发布插件 发布发行版。

使用 Ivy/Maven 发布插件

要使用 Ivy 发布插件 将发行版发布到 Ivy 仓库,请将一个或两个存档任务添加到 IvyPublication 中。以下示例演示了如何将 main 发行版的 ZIP 存档和 custom 发行版的 TAR 存档添加到 myDistribution 发布版中

build.gradle.kts
plugins {
    `ivy-publish`
}

publishing {
    publications {
        create<IvyPublication>("myDistribution") {
            artifact(tasks.distZip.get())
            artifact(tasks["customDistTar"])
        }
    }
}
build.gradle
plugins {
    id 'ivy-publish'
}

publishing {
    publications {
        myDistribution(IvyPublication) {
            artifact distZip
            artifact customDistTar
        }
    }
}

类似地,要使用 Maven 发布插件 将发行版发布到 Maven 仓库,请将一个或两个存档任务添加到 MavenPublication 中,如下所示

build.gradle.kts
plugins {
    `maven-publish`
}

publishing {
    publications {
        create<MavenPublication>("myDistribution") {
            artifact(tasks.distZip)
            artifact(tasks["customDistTar"])
        }
    }
}
build.gradle
plugins {
    id 'maven-publish'
}

publishing {
    publications {
        myDistribution(MavenPublication) {
            artifact distZip
            artifact customDistTar
        }
    }
}