【发布时间】:2019-03-26 23:51:41
【问题描述】:
我有一个在本地工作的多项目 Gradle 构建。 有一个父 gradle 文件 build.gradle settings.gradle 文件将项目分配给它们各自的 gradle 构建文件:
include 'load'
include 'loadRemote'
project(':loadRemote').buildFileName = 'remoteLoad_build.gradle'
project(':load').buildFileName = 'load_build.gradle'
rootProject.name = 'EquipLoad'
build.gradle 父文件调用buildAll 命令在本地从命令行构建 2 个项目。
我创建了一个 Jenkins 文件来构建这两个项目。但 Jenkins 流水线不识别具体的项目任务。
这些是buildAll 命令的任务
gradle.projectsEvaluated {
task compileAll (dependsOn: [project(':loadRemote').remoteLoadCleanCompileStage]) {
compileAll.finalizedBy project(':load').loadCleanCompileStage
}
task packageAll (dependsOn: [project(':loadRemote').remoteLoadPackage]) {
packageAll.finalizedBy project(':load').loadPackage
}
task buildAll (dependsOn: [compileAll]) {
buildAll.finalizedBy packageAll
}
}
Jenkins的错误是无法识别任务project(':loadRemote').remoteLoadCleanCompileStage
如何在 Jenkins 中识别多构建项目? 是否必须添加 settings.gradle 文件?
更新 我以为项目中找不到不同的构建文件,所以我将其添加到 settings.gradle 文件中
rootProject.name = 'EquipLoad'
include 'load'
project(':load').projectDir = new File(settingsDir, rootProject.rootDir.getAbsolutePath() + "/Load")
project(':load').buildFileName = 'load_build.gradle'
include 'loadRemote'
project(':loadRemote').projectDir = new File(settingsDir, rootProject.rootDir.getAbsolutePath() + "/LoadRemote")
project(':loadRemote').buildFileName = 'remoteLoad_build.gradle'
报错还是一样,build.gradle文件(父级)不识别依赖任务project(':loadRemote').remoteLoadCleanCompileStage
查看调试语句,找到并识别了子构建 gradle 文件:
使用构建文件“/var/.../loadRemote/remoteLoad_build.gradle”评估项目“:loadRemote”。
加载构建文件显示相同的文本。
然而,这些 gradle 构建文件中的任务在父 build.gradle 文件中无法识别。
【问题讨论】:
-
我知道这是几个月前的事了……但是你能发布你的詹金斯管道文件吗?我想看看你是如何配置管道的 scm 部分的。