首页 > 解决方案 > 如何在 Gradle 中基于 Kotlin DSL 的多项目构建中禁用 distZip

问题描述

我已经使用 Kotlin DSL 建立了一个 Gradle 多项目构建。这是build.gradle.kts在根:

plugins {
    kotlin("jvm") version "1.2.70" apply false
}

allprojects {
    repositories {
      mavenCentral()
    }
}

subprojects {
    version = "1.0"
}

这是sub/build.gradle.kts在我的子项目中:

plugins {
    application
    kotlin("jvm")
}

application {
    mainClassName = "me.package.MainKt"
}

dependencies {
    compile(kotlin("stdlib"))
    compile("io.github.microutils:kotlin-logging:1.6.10")
    compile("ch.qos.logback:logback-classic:1.2.3")
}

当我运行插件时,我会$ gradle build在.applicationsub/build/distribution

我不需要 zip 发行版,也不需要 tar 发行版中的版本号。两者在常规中都应该是微不足道的,build.gradle例如:

distZip.enabled = false
distTar.archiveName = "${project.name}.tar" 

无论我尝试使用 Kotlin DSL,我都会得到Unresolved reference: distZip. 我如何解决distZipdistTar任务?

标签: gradlebuildkotlingradle-kotlin-dsl

解决方案


你需要的是:

val distZip by tasks
distZip.enabled = false
val distTar by tasks
distTar.archiveName = "${project.name}.tar" 

或者:

tasks.getByName<Zip>("distZip").enabled = false
tasks.getByName<Tar>("distTar").archiveName = "${project.name}.tar" 

推荐阅读