Gradle多项目,顶部的ext{}失败?

Gradle多项目,顶部的ext{}失败?,gradle,Gradle,我不明白为什么ext{}的顺序很重要,并导致下面这样的失败?如果没有一个可以复制的例子,你们是如何计算放置物品的顺序的?文档似乎只是单独讨论闭包,而不是它们之间的相互依赖关系 project-base settings.gradle build.gradle (inside this one in examples below) subproject_folder build.gradle ext {} // this blows up here builds

我不明白为什么ext{}的顺序很重要,并导致下面这样的失败?如果没有一个可以复制的例子,你们是如何计算放置物品的顺序的?文档似乎只是单独讨论闭包,而不是它们之间的相互依赖关系

project-base
    settings.gradle
    build.gradle (inside this one in examples below)
  subproject_folder
    build.gradle


ext {} // this blows up here

 buildscript {}

 plugins {}

 sonarqube {} 

 allprojects {}

 subprojects {}
但如果我有同样的东西,除了

buildscript {}

plugins {}

sonarqube {}

allprojects {}

subprojects {}

ext {} // bingo all of a sudden this is legal ?

问题不是
ext{}
块的位置,而是
buildscript{}
plugins{}
块的位置

如中所示,
plugins{}
块必须是生成文件中的第一个块。
而且因为
buildscript{}
块也是关于确定在构建文件中可以访问什么,它的类路径有效,所以它有类似的限制。

在这种情况下,我们不是有来自Gradle的明确错误消息吗?我想是的。@M.Ricciuti:是的,我们这样做:
build文件'/tmp/build.gradle':5:在plugins{}块之前只允许buildscript{}和其他plugins{}脚本块,不允许其他语句
什么版本?5.14没有给出。