發行外掛程式有助於組建用於發行專案的檔案。發行檔案通常包含可執行應用程式和其他支援檔案,例如文件。

用法

若要使用發行外掛程式,請在組建指令碼中加入下列內容

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 外掛程式會新增數個任務至您的專案,如下所示。

distZipZip

建立發行內容的 ZIP 檔案。

distTarTask

建立發行內容的 TAR 檔案。

assembleDistTask

相依於distTardistZip

建立發行內容的 ZIP 和 TAR 檔案。

installDistSync

組裝發行內容並將其安裝在目前的機器上。

對於您新增至專案的每個額外發行,Distribution 外掛程式會新增下列任務,其中 distributionName 來自 Distribution.getName()

distributionNameDistZipZip

建立發行內容的 ZIP 檔案。

distributionNameDistTarTar

建立發行內容的 TAR 檔案。

assembleDistributionNameDistTask

相依於distributionNameDistTardistributionNameDistZip

建立發行內容的 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 物件來新增其他檔案。

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
        }
    }
}