0

我有一个 gradle 任务来为我的所有项目构建 docker 镜像。这些运行良好,除了在r​​ootProject`rootProject之前执行依赖任务而不是子项目。DockerimageBuild itself. This dependency should only apply for the我广泛搜索并阅读了文档,但没有找到添加依赖项的完美解决方案,可能我错过了一个明显的观点。

这是我的任务(剥离了一些 gradle 文件)。

allprojects {
apply plugin: com.bmuschko.gradle.docker.DockerRemoteApiPlugin
    repositories { jcenter() }

docker {
    registryCredentials {
            username = dockerRegistryUsername
            password = dockerRegistryPassword
    }
}

// task build_DockerImage(type: DockerBuildImage, dependsOn: [copy_ImageSource, prepare_ImageConfig]) {
task build_DockerImage(type: DockerBuildImage) {
    group 'Docker'
    description "Builds the docker image: ${dockerTag} locally"
    println "Project: ${rootProject.projectDir}/ci/images/${project.name}"
    inputDir = file("${rootProject.projectDir}/ci/images/${project.name}")
    tag = "azeti/${project.name}:${dockerTag}"
}

它应该有dependsOn: copy_ImageSource,但我想不出它的正确符号。

谢谢你的帮助。问候,塞巴斯蒂安

4

1 回答 1

0

解决方案很简单,只需将当前项目的名称与根项目的名称进行比较,然后只申请dependsOn匹配即可。

为了简单起见,我已经删除了其余代码,请检查 if 条件。

task build_DockerImage(type: DockerBuildImage) {
    group 'Docker'
    description "Builds the docker image: ${dockerTag} locally"
    if(project.name.equals(rootProject.name) ) {
        dependsOn copy_ImageSource
    }
    inputDir = file("${rootProject.projectDir}/ci/images/${project.name}")
    tag = "azeti/${project.name}:${dockerTag}"
}
于 2017-06-08T14:53:53.440 回答