gradle - 如何在 Gradle Kotlin DSL 中使用来自 gradle.properties 的插件版本?

标签 gradle intellij-idea kotlin gradle-kotlin-dsl

现在我用这种方式:

plugins {
    val kotlinVersion: String by project
    val springBootPluginVersion: String by project
    val springDependencyManagementPluginVersion: String by project

    id("org.jetbrains.kotlin.plugin.allopen") version kotlinVersion
    id("org.jetbrains.kotlin.jvm") version kotlinVersion
    id("org.springframework.boot") version springBootPluginVersion
    id("io.spring.dependency-management") version springDependencyManagementPluginVersion
}

此变体可以编译并运行,但我不知道这种方式是否正确以及为什么 IntelliJ IDEA 在放置版本定义的行上显示错误:

'val Build_gradle.project: Project' can't be called in this context by implicit receiver. Use the explicit one if necessary

最佳答案

有几个问题对此有一些详细信息:

  • gradle/kotlin-dsl#480
  • gradle/gradle#1697

  • 在最新版本的 Gradle 中执行此操作的方法是使用 settings.gradlesettings.gradle.ktspluginManagement {}块。

    在你的情况下,它可能看起来像:
    pluginManagement {
      resolutionStrategy {
        eachPlugin {
          when (requested.id.id) {
            "org.jetbrains.kotlin.plugin.allopen" -> {
              val kotlinVersion: String by settings
              useVersion(kotlinVersion)
            }
            "org.jetbrains.kotlin.jvm" -> {
              val kotlinVersion: String by settings
              useVersion(kotlinVersion)
            }
            "org.springframework.boot" -> {
              val springBootPluginVersion: String by settings
              useVersion(springBootPluginVersion)
            }
            "io.spring.dependency-management" -> {
              val springDependencyManagementPluginVersion: String by settings
              useVersion(springDependencyManagementPluginVersion)
            }
          }
        }
      }
    }
    

    关于gradle - 如何在 Gradle Kotlin DSL 中使用来自 gradle.properties 的插件版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52800536/

    相关文章:

    gradle - 如何在 Gradle 中设置 Kotlin 源编码?

    intellij-idea - 在客户端 - 服务器模式下运行 IntelliJ

    java - 当 JAR 没有包时 IntelliJ : How to use external JAR's as a library,

    android - finally block 错误 "Variable reader must be initialised"

    Kotlin - 如何从字符串日期获取时间 ("HH:mm")

    java - 在Android中的ListView上显示CSS样式的HTML数据

    动态功能模块中的 androidTest espresso 测试用例无法构建/运行 - 任务 ':dfm:mergeLibDexDebugAndroidTest' 执行失败

    gradle - Android Studio/Gradle测试文件夹命名约定

    intellij-idea - IntelliJ 代码换行?

    java - Gradle 和 Spring-bootRun 找不到我的类(class)