Comment définir variable d'environnement en gradle via la tâche?
J'ai gradle application. Et mon principal gradle-fichier inclure certaines tâches (groovy).
- Je besoin pour démarrer une ma tâche - environnement variable "LANG" set encoding = ru_RU.koi8-r (pour windows, linux), et après l'achèvement de la ma tâche - environnement variable contient la valeur initiale (en_US.UTF-8).
Comment faire? Aidez-moi, s'il vous plaît.
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
J'ai dû faire quelques recherches à ce sujet et va essayer de clarifier certaines questions ouvertes. Je voudrais faire deux commentaires à la place, mais je n'ai pas assez de réputation encore. Depuis que j'ai découvert Igor Ganapolsky commentaire aussi sur d'autres Sites mais sans réponse, à chaque fois, je ressens le besoin d'écrire une autre réponse d'ici, même si la question en fait est déjà une réponse.
Martin Rajniak a déclaré vous pouvez définir une variable d'environnement comme il l'a montré. Mais cette variable n'est valable que pour la tâche, il est défini dans la ou les processus correspondant, respectivement. Cela signifie que vous ne pouvez pas l'utiliser dans une autre tâche suivante. J'ai vérifié que par la définition des deux en fonction des tâches comme:
La commande
print.bat
ne echo de la variable d'environnement:L'exécution de la construire à l'aide de la commande
gradle secondTask
donnera:Si la variable d'environnement n'est plus là pour
secondTask
.Tant pour le sujet, mais il y a une autre chose importante, qui peut être la cause de Igor problème:
La méthode
environment
n'est pas disponible pour tous les Gradle tâche. Comme vous pouvez le voir dans la documentation de laExec
-tâche de type la méthodeenvironment
est explicitement définie pour leExec
-tâche-type.Pour être complet, je tiens à mentionner que vous pouvez passer des variables à un processus java à l'aide de la
JavaExec
-tâche de type et sa méthodesystemProperty
. Mais vous ne pouvez pas utiliserenvironment
ici, parce que la méthode n'est pas définie pour leJavaExec
-tâche-type.Cependant, je me suis toujours à la recherche d'un moyen de définir une variable d'environnement qui est valable pour l'ensemble de la construire sans la définir directement via le système d'exploitation.
Autant que je sache, vous ne pouvez pas définir une variable d'environnement système de Gradle Tâche.
Toutefois, il est possible de définir une variable d'environnement pour ce processus. Ainsi, si vous devez définir la variable d'environnement juste pour le générer l'utilisation de ce:
Vous pouvez également faire compiler dépendent de cette tâche, donc si vous générez votre code, vous définissez la variable d'environnement avant de compiler:
Il y a une solution plus facile
Définir une variable d'environnement pour un type de tâche, vous pouvez utiliser l'extrait de code suivant. La variable d'environnement "DOCKER_HOST", serait à toutes les tâches de type "Exec".