在 kotlin gradle dsl 中外部化插件版本?
Externalize plugin versions in kotlin gradle dsl?
我想外部化插件版本。
我试过了
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
object DependencyVersions {
const val SPRING_BOOT_VERSION = "2.1.6.RELEASE"
const val DEPENDENCY_MANAGEMENT_VERSION = "1.0.8.RELEASE"
}
plugins {
id("org.springframework.boot") version DependencyVersions.SPRING_BOOT_VERSION
id("io.spring.dependency-management") version DependencyVersions.DEPENDENCY_MANAGEMENT_VERSION
}
但我得到 Unresolved reference: DependencyVersions
直到最近,Gradle API 仍然如此,但最近已修复。请参阅 this issue covering version variables in the Plugin section. There is an open issue 以修复 Kotlin DSL 的此问题。
解决此问题的唯一方法是使用 PluginResolutionStrategy 设置版本,如 settings.gradle
:
中同一问题中所建议的那样
pluginManagement {
resolutionStrategy {
eachPlugin {
if (requested.version == null) {
def pluginName = requested.id.name.split('-').collect { it.capitalize() }.join().uncapitalize()
def versionPropertyName = (requested.id.id == 'org.jetbrains.kotlin.jvm') ?
"kotlinPluginVersion" : "${pluginName}PluginVersion"
logger.info("Checking for plugin version property '$versionPropertyName'.")
if (gradle.rootProject.hasProperty(versionPropertyName)) {
def version = gradle.rootProject.properties[versionPropertyName]
logger.info("Setting '${requested.id.id}' plugin version to $version.")
useVersion version
} else {
logger.warn("No version specified for plugin '${requested.id.id}' and property " +
"'$versionPropertyName' does not exist.")
}
}
}
}}
并在gradle.properties中添加一个属性,插件名称后缀为"Version" "jacksonVersion".
我想外部化插件版本。
我试过了
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
object DependencyVersions {
const val SPRING_BOOT_VERSION = "2.1.6.RELEASE"
const val DEPENDENCY_MANAGEMENT_VERSION = "1.0.8.RELEASE"
}
plugins {
id("org.springframework.boot") version DependencyVersions.SPRING_BOOT_VERSION
id("io.spring.dependency-management") version DependencyVersions.DEPENDENCY_MANAGEMENT_VERSION
}
但我得到 Unresolved reference: DependencyVersions
直到最近,Gradle API 仍然如此,但最近已修复。请参阅 this issue covering version variables in the Plugin section. There is an open issue 以修复 Kotlin DSL 的此问题。
解决此问题的唯一方法是使用 PluginResolutionStrategy 设置版本,如 settings.gradle
:
pluginManagement {
resolutionStrategy {
eachPlugin {
if (requested.version == null) {
def pluginName = requested.id.name.split('-').collect { it.capitalize() }.join().uncapitalize()
def versionPropertyName = (requested.id.id == 'org.jetbrains.kotlin.jvm') ?
"kotlinPluginVersion" : "${pluginName}PluginVersion"
logger.info("Checking for plugin version property '$versionPropertyName'.")
if (gradle.rootProject.hasProperty(versionPropertyName)) {
def version = gradle.rootProject.properties[versionPropertyName]
logger.info("Setting '${requested.id.id}' plugin version to $version.")
useVersion version
} else {
logger.warn("No version specified for plugin '${requested.id.id}' and property " +
"'$versionPropertyName' does not exist.")
}
}
}
}}
并在gradle.properties中添加一个属性,插件名称后缀为"Version" "jacksonVersion".