如何在 Gradle 中基于 Kotlin DSL 构建的多项目中禁用 distZip
How do you disable distZip in a multi project builds on Kotlin DSL in Gradle
我已经使用 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
时,application
插件在 sub/build/distribution
中为我创建了一个发行版。
我不需要 zip 分发包,我不希望 tar 分发包中有任何版本号。两者在常规 build.gradle
中都应该是微不足道的,例如:
distZip.enabled = false
distTar.archiveName = "${project.name}.tar"
无论我尝试使用 Kotlin DSL,我都会得到 Unresolved reference: distZip
。如何处理 distZip
和 distTar
任务?
您需要的是:
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"
我已经使用 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
时,application
插件在 sub/build/distribution
中为我创建了一个发行版。
我不需要 zip 分发包,我不希望 tar 分发包中有任何版本号。两者在常规 build.gradle
中都应该是微不足道的,例如:
distZip.enabled = false
distTar.archiveName = "${project.name}.tar"
无论我尝试使用 Kotlin DSL,我都会得到 Unresolved reference: distZip
。如何处理 distZip
和 distTar
任务?
您需要的是:
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"