發佈外掛有助於建置作為專案發佈版本的封存檔。發佈封存檔通常包含可執行應用程式和其他支援檔案,例如文件。
基礎外掛
發佈外掛分為 distribution
和 distribution-base
外掛。
distribution-base
外掛新增一個名為 distributions
的擴充功能,類型為 DistributionContainer 至專案。
distribution
外掛應用 distribution-base
外掛,並在名為 main
的發佈容器擴充功能中建立單一發佈。
如果您的建置只產生一個發佈,您只需要配置發佈或依賴預設值。
用法
若要使用發佈外掛,請在您的建置腳本中包含以下內容
plugins {
distribution
}
plugins {
id 'distribution'
}
您可以執行 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}")
。
工作
發佈外掛會將許多工作新增至您的專案,如下所示。
對於您新增至專案的每個額外發佈,發佈外掛會新增以下工作,其中 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
屬性也已變更。這將導致使用不同的名稱建立發佈封存檔。
distributions {
main {
distributionBaseName = "someName"
contents {
into("bin/config") {
from("config")
}
into("lib/samples") {
from("samples")
}
}
}
}
distributions {
main {
distributionBaseName = 'someName'
contents {
into('bin/config') {
from 'config'
}
into('lib/samples') {
from 'samples'
}
}
}
}
在上述範例中,CopySpec 定義了內容,確保自動建立 bin/config
目錄(如果它尚不存在),並將 config
目錄的內容複製到其中。相同的過程適用於 lib/samples
目錄。
Gradle 提供了一組強大的 API 來簡化處理檔案、管理檔案相依性、產生報告等等。CopySpec 只是一個範例。
檔案操作涵蓋在 使用檔案 中。
發佈
可以使用 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
}
}
}