我在manage dependency definitions and versions的多模块Kotlin项目中使用buildSrc
模块。该模块使用{em> build.gradle.kts 中显示的kotlin-dsl:
plugins {
`kotlin-dsl`
}
替代声明:
plugins {
id("org.gradle.kotlin.kotlin-dsl") version "0.16.2"
}
我想使用相同的Kotlin版本来编译buildSrc
模块以及应用程序模块。我的第一次尝试是简单地添加JVM工件:
plugins {
`kotlin-dsl`
kotlin("jvm") version "1.2.31"
}
然而,这会导致构建错误,讨论here:
解析插件时出错[id:'org.jetbrains.kotlin.jvm',版本:'1.2.31']
已经在类路径上的插件插件请求不得包含版本
只有定义一次整个项目中使用的Kotlin版本的简便方法是什么?
答案 0 :(得分:2)
我唯一知道的方法是将它放入gradle.properties(或任何其他配置)并在settings.gradle.kts pluginManagement
中读取它。像这样:
pluginManagement {
repositories {
gradlePluginPortal()
}
resolutionStrategy {
eachPlugin {
if (requested.id.id.startsWith("org.jetbrains.kotlin")) {
useVersion(gradle.rootProject.extra["kotlin.version"] as String)
}
}
}
}
答案 1 :(得分:0)
错误不言而喻:如果您已在plugins
块中指定插件,则无法在buildscript
文件夹中指定插件的版本。
您可以将kotlinVersion
放入gradle.properties,将符号链接buildSrc/gradle.propeties
放入./gradle.properties
答案 2 :(得分:0)
每个Gradle版本均应与特定版本的
kotlin-dsl
插件和任意Gradle版本之间的兼容性 和kotlin-dsl
插件版本无法得到保证。在构建版本中使用
kotlin-dsl
插件的意外版本可以 导致难以诊断问题。从Gradle 5.4开始,每当出现意外情况时都会发出警告 已检测到
kotlin-dsl
插件的版本。
Paul Merlin @eskatos, 25.04.2019
因此,我撤消了 version
:
plugins {
`kotlin-dsl`
}
repositories {
mavenCentral()
}