В моей сборке 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 в этом выпуске 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" }