【发布时间】:2020-07-15 21:24:58
【问题描述】:
我正在处理一个相当大的项目(140 多个子项目),并且一切都是用 gradle 构建的。由于子项目的数量,gradle 构建的配置阶段需要一段时间(30 多秒)。 Gradle 不仅用于构建项目,还用于启动外部工具,例如具有正确环境的 shell、consul ......这些非构建任务实际上与任何其他项目没有任何依赖关系,因此可以简单地执行而无需配置所有项目。这些任务也存在于它们自己的 gradle 文件中。对于领事 f.e.在根项目的gradle 子目录中有一个consul-starter.gradle 文件。也就是结构是这样的:
我想在gradle/consul-starter.gradle中执行startConsul任务而不执行所有子项目的配置阶段,跳过30秒的配置阶段。
我尝试将gradle/consul-starter.gradle 指定为构建文件:
gradlew -b gradle/consul-starter.gradle startConsul
但是 gradle 抱怨:
构建文件“/path/to/root-project/gradle/consul-starter.gradle”不是设置文件“/path/to/root-project/settings.gradle”定义的构建的一部分。如果这是一个不相关的构建,它必须有自己的设置文件。
我尝试指定一个空的虚拟设置文件,但遇到了同样的错误(使用虚拟文件)。
当我将 consul-starter.gradle 从 gradle 子文件夹移动到根项目文件夹时,任务的执行工作正常并根据需要跳过完整的配置阶段,但我不想将文件移动到根目录-project 文件夹以保持排序。
还有什么我可以做的吗?我“只是”希望从独立的 gradle 文件中执行任务......
2020-04-06 更新:
事实上,在consul-starter.gradle 旁边放了一个空的settings.gradle 文件后,问题就解决了。我首先尝试使用 gradle 的 --config 命令行开关指定设置文件。但由于某种原因,这不起作用......
【问题讨论】:
标签: gradle