Distribution Plugin 帮助构建作为项目分发的存档。分发存档通常包含可执行应用程序和其他支持文件,例如文档。
使用
要使用 Distribution Plugin,请在您的构建脚本中包含以下内容
plugins {
distribution
}
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 向您的项目添加了许多任务,如下所示。
对于添加到项目中的每个额外分发,分发插件会添加以下任务,其中distributionName来自Distribution.getName()
以下示例创建一个custom
分发,这将导致四个额外的任务被添加到项目中:customDistZip
、customDistTar
、assembleCustomDist
和installCustomDist
distributions {
create("custom") {
// configure custom distribution
}
}
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对象来添加其他文件。
distributions {
main {
distributionBaseName = "someName"
distributionClassifier = "classifier"
contents {
from("src/readme")
}
}
}
distributions {
main {
distributionBaseName = 'someName'
distributionClassifier = 'classifier'
contents {
from 'src/readme'
}
}
}
在上面的示例中,src/readme
目录的内容将被包含在分发中(以及默认情况下添加的src/main/dist
目录中的文件)。
distributionBaseName
和distributionClassifier
属性也已更改。这将导致分发存档以不同的名称创建。
发布
可以使用 Ivy 发布插件 或 Maven 发布插件 发布发行版。
使用 Ivy/Maven 发布插件
要使用 Ivy 发布插件 将发行版发布到 Ivy 仓库,请将一个或两个存档任务添加到 IvyPublication 中。以下示例演示了如何将 main
发行版的 ZIP 存档和 custom
发行版的 TAR 存档添加到 myDistribution
发布版中
plugins {
`ivy-publish`
}
publishing {
publications {
create<IvyPublication>("myDistribution") {
artifact(tasks.distZip.get())
artifact(tasks["customDistTar"])
}
}
}
plugins {
id 'ivy-publish'
}
publishing {
publications {
myDistribution(IvyPublication) {
artifact distZip
artifact customDistTar
}
}
}
类似地,要使用 Maven 发布插件 将发行版发布到 Maven 仓库,请将一个或两个存档任务添加到 MavenPublication 中,如下所示
plugins {
`maven-publish`
}
publishing {
publications {
create<MavenPublication>("myDistribution") {
artifact(tasks.distZip)
artifact(tasks["customDistTar"])
}
}
}
plugins {
id 'maven-publish'
}
publishing {
publications {
myDistribution(MavenPublication) {
artifact distZip
artifact customDistTar
}
}
}