2017-06-07 4 views
0

Ich habe eine Großtaske Aufgabe Docker Bilder für alle meine Projekte zu erstellen. Diese laufen gut, außer für die rootProject, die eine abhängige Aufgabe hat, die vor dem DockerimageBuild itself. This dependency should only apply for the rootProject` ausgeführt wird und nicht die Unterprojekte. Ich googelte ausgiebig und las die Dokumente, aber fand nicht die perfekte Lösung, um eine Abhängigkeit hinzuzufügen, wahrscheinlich fehlt mir ein offensichtlicher Punkt.Gradle Aufgabe Abhängigkeit nur für rootProject in allen Projekten Abschnitt

Dies ist meine Aufgabe (einige der Gradle-Datei entfernt).

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}" 
} 

Es sollte dependsOn: copy_ImageSource haben, aber ich kann es die richtige Schreibweise nicht herausgefunden.

Danke für Ihre Hilfe. Grüße, Sebastian

Antwort

0

Die Lösung ist so einfach wie das aktuelle Projekt den Namen mit denen des Stammprojekt zu vergleichen und nur dependsOn für ein Spiel anwenden.

Ich habe aus Gründen der Einfachheit Rest des Codes entfernt, überprüfen Sie die if-Bedingung.

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}" 
} 
Verwandte Themen