Как использовать версию плагина из gradle.properties в Gradle Kotlin DSL? - PullRequest
0 голосов
/ 14 октября 2018

Теперь я использую этот способ:

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

1 Ответ

0 голосов
/ 15 октября 2018

Существует несколько проблем, в которых есть некоторые детали:

Способ сделать это в самых последних версиях Gradle - использовать settings.gradle или settings.gradle.kts и блок pluginManagement {}.

В вашемслучай, это может выглядеть так:

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