gpt4 book ai didi

gradle - 从独立的 gradle 文件执行任务

转载 作者:行者123 更新时间:2023-12-03 03:17:10 31 4
gpt4 key购买 nike

我正在做一个相当大的项目(140 多个子项目),一切都是用 gradle 构建的。由于子项目的数量,gradle 构建的配置阶段需要一段时间(30 多秒)。 Gradle 不仅用于构建项目,还用于启动外部工具,例如具有正确环境的 shell、consul ......这些非构建任务实际上与任何其他项目没有任何依赖关系,因此可以简单地执行而无需配置所有项目。这些任务也存在于它们自己的 gradle 文件中。对于领事 f.e.有一个consul-starter.gradle gradle 中的文件根项目的子目录。那就是结构看起来像这样:

root-project  ├ gradle  │  └ consul-starter.gradle  ├ subproject 1 - N  ├ gradlew  ├ build.gradle  └ settings.gradle

I want to execute the startConsul task in gradle/consul-starter.gradle without executing the configuration phase for all subprojects, to skip the 30 seconds config phase.

I tried to specify gradle/consul-starter.gradle as build file:

gradlew -b gradle/consul-starter.gradle startConsul

但是gradle提示:

Build file '/path/to/root-project/gradle/consul-starter.gradle' is not part of the build defined by settings file '/path/to/root-project/settings.gradle'. If this is an unrelated build, it must have its own settings file.



我试图指定一个空的虚拟设置文件,但得到了同样的错误(使用虚拟文件)。

当我移动 consul-starter.gradle来自 gradle子文件夹到根项目文件夹的任务执行工作并根据需要跳过完整的配置阶段,但我不想将文件移动到根项目文件夹以保持排序。

还有什么我可以做的吗?我“只是”希望从独立的 gradle 文件中执行任务......

2020 年 4 月 6 日更新:

确实放空后 settings.gradle consul-starter.gradle 旁边的文件解决了这个问题。我首先尝试使用 gradle 的 --config 指定设置文件命令行开关。但由于某种原因,这不起作用......

最佳答案

我想,您获得 startConsul 的唯一机会在不配置其余构建的情况下运行的任务是将其作为单独/“无关”构建的一部分运行。如您所见,仅仅更改构建文件并不足以让 Gradle 考虑一个新的/不相关的构建——只要唯一的 settings.gradle文件位于父目录中。

要创建单独的构建,您只需添加一个空的 settings.gradle文件到您的gradle/目录并像以前一样运行您的任务:

./gradlew -b gradle/consul-starter.gradle startConsul

我已经用 Gradle 6.3 尝试过,它对我有用。 (不确定您是否也尝试过,当您说您指定了“一个空的虚拟设置文件”时?)

关于gradle - 从独立的 gradle 文件执行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61016449/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com