【发布时间】:2022-02-04 08:45:54
【问题描述】:
我正在尝试创建一个可以构建我的任何项目的参数化 jenkins 任务。我的项目有一些共同点,因此它们被组织在一个层次结构下:
---p1
|-p2
|-p3
|-p4
|-p5--p5a
|-p5b
所以我使用如下命令构建 p1-p4 中的任何一个:
gradle :${project}:bootWar
我在顶级 settings.gradle 中有:
include 'p1', 'p2', 'p3', 'p4', 'p5:p5a', 'p5:p5b'
但 p5 不同,它有 2 个子项目。我无法使用上述命令构建 p5,因为它说:
在项目“:p5”中找不到任务“bootWar”。
这看起来很奇怪,因为我可以做到:
cd p5 ; gradle bootWar
它以某种方式起作用,它在 2 个子项目中调用 bootWar 任务。但在 Jenkins 中这样做并不是很方便。
如何配置gradle,这样我就可以在顶层文件夹中,进入
gradle :p5:bootWar
并让它在两个子项目中执行 bootWar 任务?
【问题讨论】:
-
如果您从多项目的根目录运行
gradlew bootWar,并且不指定哪些子项目,那么bootWar任务将在包含该任务的每个子项目中运行,而其他任务将被忽略(不会导致错误)。 -
您是说
p5被配置为p1的多项目构建中的子项目,而p5是它自己的多项目构建,p5a和p5b作为其子项目p5子项目? -
@Jeff 我不想构建所有子项目。
-
@JeffScottBrown 我在我的 settings.gradle 上方列出了顶层......不知道我还能说什么关于它是如何配置的。 P1、P2、P3、P4、P5a 和 P5b 有自己的 build.gradle。没有其他 build.gradle。目录结构如上,P5a 和 P5b 在 P5 目录下。如果它有助于实现我想要做的事情,我可以添加另一个 build.gradle。 P1、P2、P3、P4 中的每一个都是一个 GIT 存储库。 P5a 和 P5b 位于同一个存储库中,因为它们需要放在一起。
标签: gradle grails build.gradle