Как я могу получить доступ к плагину каталога версий Gradle в моем файле settings.gradle.kts?

В моей сборке Gradle (Kotlin) я использую каталог платформ Micronaut для объявления зависимостей в виде статического кода, как указано ниже.


// I use this way
implementation(mn.micronaut.serde.jackson)

// instead of that§
implementation("io.micronaut.serde:micronaut-serde-jackson")

Так как каталог платформы Micronaut нужно задекларировать в settings.gradle.kts

plugins {
    id("io.micronaut.platform.catalog") version "4.3.5"
}

Как вы, наверное, заметили, мне нужно жестко закодировать номер версии плагина Gradle 4.3.5 в моем settings.gradle.kts, но я бы предпочел использовать версию Micronaut из моего gradle/libs.versions.toml файла.

[versions]
micronaut = "4.3.7"
micronautGradlePluginVersion = "4.3.5"

[plugins]
micronaut-application = { id = "io.micronaut.application", version.ref = "micronautGradlePluginVersion" }
micronaut-platform = { id = "io.micronaut.platform.catalog", version.ref = "micronautGradlePluginVersion" }

К сожалению, похоже, что в settings.gradle.kts у меня нет доступа к тому, что есть в файле build.gradle.kts.

// build.gradle.kts
plugins {
    alias(libs.plugins.micronaut.platform)
}

Есть ли способ заставить это работать в моем settings.gradle.kts без необходимости жестко кодировать номер версии или даже использовать что-то эквивалентное

// settings.gradle.kts
plugins {
    alias(libs.plugins.micronaut.platform)
}

?

Gradle за прокси-сервером
Gradle за прокси-сервером
Создайте проект Gradle под сетевым прокси.
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
0
0
262
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

К сожалению, это невозможно, как упоминал участник Gradle в этом выпуске GitHub об использовании средств доступа к каталогу версий в скрипте настроек:

Каталоги версий нельзя использовать до их оценки, которая происходит во время оценки настроек, то есть ПОСЛЕ оценки плагинов настроек. Итак, по сути, это проблема курицы и яйца; мы ничего не можем с этим поделать.

~ (Сделать каталоги версий доступными в блоке плагинов скрипта настроек)

Это означает, что вам придется вручную объявить версии плагина, как вы это делаете сейчас:

plugins {
    id("io.micronaut.platform.catalog") version "4.3.5"
}

Как говорит @Edric, вы не можете получить доступ к каталогу версий из settings.gradle.kts.

Однако, чтобы ваши объявления оставались СУХИМИ, вы можете использовать комбинацию файла gradle.properties и определения каталога версий на основе кода, чтобы вам не приходилось повторно объявлять одно и то же значение.

Части этого:

// gradle.properties

micronautGradlePluginVersion=4.3.5
// settings.gradle.kts

plugins {
    val micronautGradlePluginVersion by settings
    id("io.micronaut.platform.catalog") version micronautGradlePluginVersion
}

val micronautGradlePluginVersion by settings // declaration in plugins block is separate
dependencyResolutionManagement {
    versionCatalogs {
        create("libs") {
            version("micronautGradlePluginVersion", micronautGradlePluginVersion)
        }
    }
}

Вы можете продолжать писать весь файл TOML в коде файла настроек или использовать версию, указанную выше, в файле TOML:

// gradle/libs.versions.toml

[plugins]
micronaut-application = { id = "io.micronaut.application", version.ref = "micronautGradlePluginVersion" }
micronaut-platform = { id = "io.micronaut.platform.catalog", version.ref = "micronautGradlePluginVersion" }

Другие вопросы по теме