2017-06-07 42 views
0

我有一個gradle任務來爲我的所有項目構建docker鏡像。除rootProject之外,這些運行正常,它有一個依賴任務在DockerimageBuild itself. This dependency should only apply for the rootProject之前執行,而不是子項目。 我GOOGLE了廣泛閱讀文檔,但沒有找到完美的解決方案來添加依賴項,可能我缺少一個明顯的觀點。所有項目部分中只有rootProject的Gradle任務依賴項

這是我的任務(剝去了一些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但我無法弄清楚它的正確表示法。

感謝您的幫助。 問候, 塞巴斯蒂安

回答

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}" 
} 
相關問題