无法参数化Gradle插件块中的版本

时间:2019-04-10 16:45:33

标签: gradle

在Gradle中,当我声明具有硬编码版本的插件时,效果很好:

plugins {
    id 'org.springframework.boot' version '2.1.4.RELEASE'
}

但是,如果我尝试对其进行参数化,则会出现异常。

gradle.properties的内容:

springBootVersion=2.1.4.RELEASE

build.gradle的内容:

plugins {
    id 'org.springframework.boot' version "$springBootVersion"
}

为什么发生以下异常?

Cause: startup failed:
build file 'build.gradle': 10: argument list must be exactly 1 literal non empty string

See https://docs.gradle.org/5.2.1/userguide/plugins.html#sec:plugins_block for information on the plugins {} block

 @ line 10, column 5.
       id 'org.springframework.boot' version "$springBootVersion"
       ^

1 error

1 个答案:

答案 0 :(得分:2)

您面临的是plugins块中的documented limitation。您不能在其中使用参数化。

可能的是将插件版本的配置委派给settings.gradle

gradle.properties中:

springBootVersion=2.1.4.RELEASE

settings.gradle中:

// Must be the first statement of settings.gradle
pluginManagement {
    resolutionStrategy {
        eachPlugin {
            if (requested.id.id == "org.springframework.boot") {
                useModule("org.springframework.boot:org.springframework.boot.gradle.plugin:${springBootVersion}")
            }
        }
    }
}

build.gradle中:

plugins {
    id 'org.springframework.boot'
}