现在我用这种方式:
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 中执行此操作的方法是使用
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)
}
}
}
}
}
关于gradle - 如何在 Gradle Kotlin DSL 中使用来自 gradle.properties 的插件版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52800536/