Как определить версию Kotlin как для buildSrc, так и для модуля приложения?

Я использую модуль buildSrc в многомодульном проекте Kotlin для управлять определениями и версиями зависимостей. Модуль использует kotlin-dsl, как показано в build.gradle.kts < / em>:

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"
}

Однако это приводит к ошибке сборки, которая обсуждается здесь:

Ошибка при разрешении плагина [id: 'org.jetbrains.kotlin.jvm', версия: '1.2.31']
Запрос плагина для плагина, который уже находится в пути к классам, не должен включать версию

Как удобно всего определить один раз версию Kotlin, используемую в проекте?

Связанный


person JJD    schedule 27.03.2018    source источник


Ответы (3)


Единственный способ, о котором я знаю, - это поместить его в 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)
            }
        }
    }
}
person Czar    schedule 09.04.2018

Каждый выпуск Gradle предназначен для использования с определенной версией kotlin-dsl подключаемого модуля, и совместимость между произвольными выпусками Gradle и kotlin-dsl версиями подключаемого модуля не гарантируется.

Использование неожиданной версии модуля kotlin-dsl в сборке может затруднить диагностику проблем.

Начиная с Gradle 5.4, при обнаружении неожиданной версии плагина kotlin-dsl выдается предупреждение.

Пол Мерлин @eskatos, 25.04.2019

Поэтому я удалил version:

plugins {
    `kotlin-dsl`
}

repositories {
    mavenCentral()
}
person JJD    schedule 26.04.2019

Ошибка говорит сама за себя: вы не можете указать версию плагина в папке plugins, если вы уже указали ее в блоке buildscript.

Вы можете поместить kotlinVersion в gradle.properties и символическую ссылку buildSrc/gradle.propeties на ./gradle.properties

person Dmitriy Voronin    schedule 10.04.2018