当指定-b时,即使不应该使用,settings.gradle仍会使用。为什么?

当指定-b时,即使不应该使用,settings.gradle仍会使用。为什么?,gradle,Gradle,根据文件: 如果使用-b选项,则不使用settings.gradle文件 但我创建了一个简单的项目: . ├── anotherBuild.gradle ├── build.gradle └── settings.gradle build.gradle包含: task taskA{ doLast{ println "taskA from build.gradle" } } task taskA{ doLast{ println "tas

根据文件:

如果使用-b选项,则不使用settings.gradle文件

但我创建了一个简单的项目:

.
├── anotherBuild.gradle
├── build.gradle
└── settings.gradle
build.gradle包含:

task taskA{
    doLast{
        println "taskA from build.gradle"
    }
}
task taskA{
    doLast{
        println "taskA from anotherBuild.gradle"
    }
}
println "From settings.gradle, executed during initialization phase"
另一个build.gradle包含:

task taskA{
    doLast{
        println "taskA from build.gradle"
    }
}
task taskA{
    doLast{
        println "taskA from anotherBuild.gradle"
    }
}
println "From settings.gradle, executed during initialization phase"
和settings.gradle包含:

task taskA{
    doLast{
        println "taskA from build.gradle"
    }
}
task taskA{
    doLast{
        println "taskA from anotherBuild.gradle"
    }
}
println "From settings.gradle, executed during initialization phase"
当我跑步时:

gradle -q -b anotherBuild.gradle taskA
我可以看到gradle从settings.gradle打印,不管怎样,它都是在初始化阶段执行的。为什么?
使用-b时是否应该忽略settings.gradle?

尽管指定了-b,但使用settings.gradle可能是一个错误,但是-b仅用于快速测试和实验

在我看来,你应该总是有一个设置。G显式指定根项目名称,而不是从根项目目录名称派生


如果您真的需要不同的构建脚本,您可以做的是使用不同的设置脚本来指向不同的构建脚本,然后使用-c来选择正确的设置脚本,而不是使用-b。

您是对的,对不起!你在运行哪个版本?很好:我正在使用Gradle 4.0。是的,没错。请看这里:-我提出的问题结束了你的提问。Peter指出-b根本不适用于多项目生成。@Opal具有设置。gradle不会使您的生成成为多项目生成。在settings.gradle中包含第二个项目将使生成成为多项目生成。你是e。G如果要显式命名根项目或设置插件存储库和其他内容,甚至需要在单个项目构建中使用settings.gradle。实际上,在我看来,根项目名称应该总是显式设置为不从根项目目录名称派生,因此应该总是有一个由init任务生成的settings.gradle。这肯定是一个bug,如果文档中说settings.gradle是被忽略的,那么如果使用了-b,settings.gradle实际上没有被忽略,那么可能是一个代码错误,也可能是一个doku错误。你可以在