30 votes

Comment écraser la propriété dans Ant?

Existe-t-il un moyen de réattribuer la valeur de la tâche property d'Ant? Ou existe-t-il une autre tâche disponible à cet effet?

4voto

Dave Webb Points 90034

Vous ne pouvez pas changer la valeur d'une propriété dans Ant.

Si vous avez des tâches Ant que vous voulez exécuter à plusieurs reprises en passant des valeurs différentes, je recommande la tâche macrodef car vous pouvez exécuter le même macro plusieurs fois en passant des attributs différents.

Par exemple:

Remarquez que ${property} est utilisé pour faire référence aux propriétés et @{attribute} est utilisé pour faire référence aux attributs passés à la tâche .

2voto

Carl Smotricz Points 36400

Les propriétés sont immuables en ant. Mais ce n'est pas une limitation aussi terrible qu'elle peut sembler. Il existe toute une classe de langages de programmation où (la plupart des) variables sont constantes et pourtant elles parviennent à faire des choses   ceci s'appelle la "programmation fonctionnelle."

Vous pouvez "modifier" les valeurs utilisées par différentes tâches en dérivant de nouvelles propriétés modifiées à partir des anciennes, ou en changeant les paramètres lors de l'appel des tâches avec les tâches subant ou antcall. Si vous êtes créatif, vous trouverez généralement un moyen de résoudre votre problème.

0voto

Steven Moslin Points 21

Voici un exemple utilisant local avec la commande basename. Var-unset ne fonctionne pas pour moi.

0voto

R. Oosterholt Points 1745

Il existe plusieurs options que vous pouvez faire :

  1. Au lieu de , vous pouvez utiliser d'ant-contrib. La variable peut être réinitialisée selon les besoins.
  2. Utilisez qui permet de réinitialiser une propriété dans une portée "bloc" (par exemple, dans une cible).
  3. Utilisez un script (par exemple, Groovy) à l'intérieur d'ant qui permet de réinitialiser une propriété :

    properties.propertyName = "propertyValue"

Ou définissez une macro comme ceci et utilisez-la:

            properties["@{name}"] = "@{value}"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X