2017-02-08 5 views
1

Je souhaite définir des méthodes dans mon fichier de script et les utiliser pour définir des tâches de construction pour chaque individu de projet (bibliothèque personnalisée).Mauvais ordre d'exécution de la tâche dans la gradation 3.3

ext.buildDockerImage = { imageName -> 

    def distDir = "${getProject().getBuildDir()}/docker" 
    copy { 
     from "${project.getProjectDir()}/src/docker/" 
     into distDir 
    } 
    println 'Build docker image' 
} 

Dans mon projet build.gradle j'ai créé une tâche:

apply plugin: "war" 
apply plugin: "jacoco" 

dependency { 
    // all dependencies 
} 

task buildDocker() { 
    apply from: "${project.getRootDir()}/docker/scripts.gradle" 
    buildDockerImage("admin") 
} 

Le problème est que chaque fois que je suis en cours d'exécution gradle build, cette tâche Réalise également:

$ gradle build -xtest 
Build docker image 
# rest of build 

Comme vous pouvez le voir , tout ce que je veux est de créer une bibliothèque personnalisée qui contiendra des méthodes, utilisées pour créer des tâches pour chaque projet. Mais actuellement je ne peux pas importer ces méthodes sans casser la construction. La méthode buildDockerImage ne fonctionnera qu'après l'ajout du fichier war au répertoire de construction, cette tâche doit donc être exécutée à la demande seulement, je ne veux pas être inclus dans le processus tout le temps.

Mes questions:

  • comment faire mes tâches à courir que lorsque je tâche d'exécution manuellement
  • pourquoi, quand j'exécute mon build, script est exécuté en tant que premier?

Répondre

1

Votre tâche buildDocker() définit tout en phase de configuration. Donc, lorsque vous exécutez votre build gradle, cela fonctionnera toujours. Si vous souhaitez exécuter cette tâche en tant que tâche autonome, définissez votre tâche en phase d'exécution de la tâche. quelque chose comme ci-dessous

task buildDocker() { 
    apply from: "${project.getRootDir()}/docker/scripts.gradle" 
    doLast{ 
    buildDockerImage("admin") 
    } 
} 

Read This article

Cela pourrait aider

+0

Il a travaillé :) J'étais si proche de solution, je vous remercie pour votre aide :) – Beri