Question

J'essaie de créer ma propre tâche, qui créera un package de tous les artefacts générés lors de ma construction multi-projets.

Actuellement, ce que je fais correctement, c'est simplement :

gradle build createPackage

Ce qui donne un résultat comme celui-ci :

:test-utility:compileJava UP-TO-DATE
:test-utility:processResources UP-TO-DATE
...
:test-utility:check UP-TO-DATE
:test-utility:build UP-TO-DATE
Creating Package...
Created.

BUILD SUCCESSFUL

Total time: 4.654 secs

Avec le createPackage la tâche étant :

task createPackage {    
    println "Creating Package..."
    println "Created."
}

Cependant, je voudrais simplement le faire en exécutant une seule commande, alors quelle serait la meilleure façon de le faire et de garantir que l'ordre reste maintenu ?

Idéalement, j'aimerais appeler build au sein de createPackage tâche ou ajouter au build tâche avec ma tâche.

Était-ce utile?

La solution

Ok, en lisant entre les lignes, il y a quelques points à clarifier

1) Vos printlns sont exécutés dans la phase de configuration, pas dans la phase d'exécution.Voir http://www.gradle.org/docs/current/userguide/build_lifecycle.html pour plus d'informations.

2) Vous n’avez pas une seule tâche de « construction ». gradle build sur la ligne de commande exécutera la tâche « build » de chacun de vos sous-projets.La tâche de votre package devra dépendre de chacun d’eux.Quelque chose comme..

apply plugin: 'java'
evaluationDependsOnChildren()
task createPackage(type:Zip) {
   dependsOn subprojects*.build
}

3) Vous pouvez être plus déclaratif avec Gradle - dites-lui simplement ce que vous voulez emballer et il déterminera ce dont il a besoin pour fonctionner.Par exemple, vous pouvez dire que vous souhaitez compresser tous les fichiers jar de vos sous-projets.

apply plugin: 'java'    
evaluationDependsOnChildren()
task createPackage(type:Zip) {
   from subprojects*.jar
}

Autres conseils

Il existe de nombreuses façons.Une suggestion est de modifier build dépendre de createPackage pour être sûr que tu peux appeler juste gradle build.Ensuite, vous souhaitez améliorer votre tâche et indiquer quelles sont ses entrées (ce sont probablement les sorties d'autres tâches comme jar).Gradle ajoutera ces tâches à l'exécution lorsque vous exécuterez la build et pourra les réexécuter en fonction de l'état à jour de chaque tâche.Ceci est documenté dans le guide de l'utilisateur - http://www.gradle.org/docs/current/userguide/more_about_tasks.html#sec:up_to_date_checks et plus tard dans un chapitre sur les tâches personnalisées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top