无法在插件之前设置变量{}

时间:2019-07-16 10:42:37

标签: spring-boot gradle build.gradle

我有这个build.gradle

plugins {
    id 'org.springframework.boot' version '2.1.6.RELEASE'
    id 'java'
    id 'eclipse-wtp'
}

[...]

dependencies {
    compileOnly group: 'org.springframework.boot', name: 'spring-boot-dependencies', version: '2.1.6.RELEASE', ext: 'pom'

[...]

我将指定一个变量springBootVersion = "2.1.6.RELEASE"。不幸的是,这是不可能的,因为我收到此错误:

  

仅允许buildscript {}和其他插件{}脚本块   在插件{}阻止之前

我也尝试从spring-boot-dependencies中删除该版本,但出现此错误:

  

无法解决:org.springframework.boot:spring-boot-dependencies

是否没有办法在plugin{}块之前声明变量,或者从spring-boot-dependencies中删除版本?

我正在使用Gradle 5.4.1

2 个答案:

答案 0 :(得分:0)

也许

plugins {
    ext.springBootVersion = '2.1.6.RELEASE' 
    id 'org.springframework.boot' version springBootVersion
    ... 
}

[...]

dependencies {
    compileOnly "org.springframework.boot:spring-boot-dependencies:${plugins.springBootVersion}@pom"

答案 1 :(得分:0)

您不能在plugins块中使用变量。在此处检查“严格语法”部分:https://docs.gradle.org/current/javadoc/org/gradle/plugin/use/PluginDependenciesSpec.html 也: https://github.com/gradle/gradle/issues/3593

除了在plugins块中之外,您不需要在其他任何地方定义spring boot版本,只需应用spring boot插件(org.springframework.boot),然后在该块之后应用(io.spring.dependency-management) 。然后,后者将根据启动插件版本来解决正确的版本。

如果还不知道,我建议使用https://start.spring.io/来生成您的spring boot项目,因为它可以为您生成一个随时可用的gradle项目。