Extrait des méthodes communes de script de build Gradle

J'ai un script de build Gradle (build.gradle), dans lequel j'ai créé certaines tâches. Ces tâches consistent principalement en des appels de méthode. Les méthodes appelées sont également dans le script de construction.

Maintenant, voici la situation:

Je suis entrain de créer un juste montant de créer des scripts qui contiennent des tâches différentes, mais utiliser les mêmes méthodes à partir du script d'origine. Donc, je voudrais extraire ces "méthodes communes" d'une certaine façon, donc je peux facilement les réutiliser au lieu de les copier pour chaque nouveau script que j'ai créer.

Si Gradle ont été PHP, quelque chose comme ce qui suit serait l'idéal:

//script content
...
require("common-methods.gradle");
...
//more script content

Mais bien sûr, ce n'est pas possible. Ou est-il?

De toute façon, comment puis-je arriver à ce résultat? Quelle est la meilleure méthode pour faire cela? J'ai lu à travers le Gradle documentation déjà, mais je n'arrive pas à déterminer quelle méthode est la plus simple et la mieux adaptée pour cela.

Merci d'avance!


Mise à JOUR:

J'ai réussi à extraire les méthodes dans un autre fichier

(à l'aide de apply from: 'common-methods.gradle'),

ainsi, la structure est comme suit:

parent/
      /build.gradle              //The original build script
      /common-methods.gradle     //The extracted methods
      /gradle.properties         //Properties used by the build script

Après l'exécution d'une tâche à partir d' build.gradle, je suis tombé sur un nouveau problème: apparemment, les méthodes ne sont pas reconnus quand ils sont dans common-methods.gradle.

Des idées sur la façon de résoudre ce problème?

  • Êtes-vous sûr que vous devez écrire les méthodes à tous ? Vous manquez une de la Gradle goodies si vous écrivez vos scripts de génération en termes de méthodes, plus important encore, il va prendre un supplément de travail pour obtenir les différentiels de construire afin de fonctionner correctement. Le but de l'abstraction est d'utiliser et de réutiliser Tâches. Vous pouvez également créer des tâches personnalisées. Peut-être vous devriez envisager de mettre en œuvre, vous avez maintenant dans les méthodes de tâches.
  • et les autres, quelle est l'utilité de faire quelque chose comme un timestamp() ou currentWorkingDirectory() méthodes task-s (par exemple). Les fonctions de l'utilitaire et des choses semblables sont nominalement scalaire -- il ne serait pas de tâches, à l'exception qu'il y a des limitations sur de réutiliser le code dans-construit avec Gradle et la plupart des systèmes de construction. J'aime le monde asséché où je peux faire une chose UNE seule fois et de le réutiliser. En fait, l'extension @Pieter VDE l'exemple j'utilise aussi un "root.gradle" pour mes parents projet, Le construire.gradle fichier définit généralement un projet spécificités et puis juste apply ${ROOT} ...
InformationsquelleAutor Pieter VDE | 2013-09-10