gpt4 book ai didi

gradle - Gradle Kotlin DSL 无法识别 buildscript 中的 ext

转载 作者:IT老高 更新时间:2023-10-28 13:29:51 29 4
gpt4 key购买 nike

这几天我在尝试写一些代码来体验Spring 5中的Spring响应式特性和kotlin扩展,还准备了一个gradle Kotlin DSL build.gradle.kt来配置gradle build。

build.gradle.kt 是由http://start.spring.io 生成的Spring Boot 模板代码转换而来的。 .

但是buildscript中的ext却无法被Gradle检测到。

buildscript {
ext { }
}

ext 会导致 Gradle 构建错误。

classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")compile("org.jetbrains.kotlin:kotlin-stdlib -jre8:$kotlinVersion") 工作,我以艰难的方式添加了变量。

val kotlinVersion = "1.1.4"
val springBootVersion = "2.0.0.M3"

但我必须在全局顶部位置声明它们并在 buildscript 中复制它们。

代码:https://github.com/hantsy/spring-reactive-sample/blob/master/kotlin-gradle/build.gradle.kts

有没有一种优雅的方法可以让 ext 工作?

更新:有一些丑陋的方法:

  1. 来自 Gradle Kotlin DSL 示例,https://github.com/gradle/kotlin-dsl/tree/master/samples/project-properties , 在gradel.properties 中声明属性。

    kotlinVersion = 1.1.4
    springBootVersion = 2.0.0.M3

    并在 build.gradle.kts 中使用它。

    buildScript{
    val kotlinVersion by project

    }
    val kotlinVersion by project //another declare out of buildscript block.
  2. 与上面类似,在 buildScript block 中声明它们:

    buildScript{
    extra["kotlinVersion"] = "1.1.4"
    extra["springBootVersion"] = "2.0.0.M3"
    val kotlinVersion: String by extra

    }
    val kotlinVersion: String by extra//another declare out of buildscript block.

如何避免重复val kotlinVersion: String by extra

最佳答案

使用 Kotlin DSL ext 已更改为 extra,可以在 buildscript 下使用。

例如:-

buildscript {
// Define versions in a single place
extra.apply{
set("minSdkVersion", 26)
set("targetSdkVersion", 27)
}
}

关于gradle - Gradle Kotlin DSL 无法识别 buildscript 中的 ext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45753733/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com