使用多项目gradle构建创建Jenkins管道

时间:2018-10-22 20:22:44

标签: jenkins gradle

我有一个在本地工作的多项目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文件中无法识别。

1 个答案:

答案 0 :(得分:0)

问题是一个简单的区分大小写的错误。 我将文件夹命名为:Load和LoadRemote。但是在gradle脚本中将它们标识为':load'和':loadRemote'。通过将脚本文本更改为':Load'和':LoadRemote'解决了我的问题。