如何为buildSrc和应用程序模块定义Kotlin版本?

时间:2018-03-27 20:50:26

标签: gradle kotlin build.gradle multi-module gradle-kotlin-dsl

我在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版本的简便方法是什么?

相关

3 个答案:

答案 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()
}