ant-contrib - if/then/else tâche
Je suis à l'aide de la fourmi, et j'ai un problème avec if/then/else tâche, (ant-contrib-1.0b3.jar).
Je suis en cours d'exécution quelque chose qui peut être simplifié avec build.xml ci-dessous.
Je m'attends à obtenir de "ant -Dgiv=Luke" le message
input name: Luke
should be overwritten with John except for Mark: John
mais il semble bien "donner" n'est pas remplacé à l'intérieur de if/then/else..
input name: Luke
should be overwritten with John except for Mark: Luke
Est-il en fonction du fait que je suis à l'aide est égal à la tâche avec ${giv}
?
Sinon quel est le problème dans mon code?
build.xml CODE:
<project name="Friend" default="ifthen" basedir=".">
<property name="runningLocation" location="" />
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="${runningLocation}/antlib/ant-contrib-1.0b3.jar" />
</classpath>
</taskdef>
<target name="ifthen">
<echo message="input name: ${giv}" />
<if>
<equals arg1="${giv}" arg2="Mark" />
<then>
</then>
<else>
<property name="giv" value="John" />
</else>
</if>
<echo message="should be overwritten with John except for Mark: ${giv}" />
</target>
</project>
OriginalL'auteur Francesco | 2011-02-25
Vous devez vous connecter pour publier un commentaire.
Ant les Propriétés sont très difficiles à remplacer (si ce n'est impossible). Ce que vous avez besoin est un Variable. Elles sont également définies dans la Fourmi Contrib JAR.
De l'édition de votre exemple:
Ce n'est pas tout à fait vrai, j'ai été en mesure de faire ce qui suit en ant 1.8: <loadfile property="artefact.la version" srcFile="../conf/VERSION.TXT"/> <script language="javascript"> <![CDATA[ projet.setProperty('artefact.version " projet.getProperty('artefact.la version").trim()); ]]> </script>
Propriétés Ant sont immuables. Cela signifie qu'une fois qu'une propriété est définie, vous ne pouvez pas modifier la valeur.
OriginalL'auteur DoctorRuss
En Ant une propriété est toujours définie qu'une seule fois, après que la variable n'est pas modifiable plus.
Voici une solution en utilisant la norme Ant (sans
ant-contrib
) qui pourrait être utile pour les gens qui ne veulent pas d'un supplément de dépendance.Pas de problème, j'ai donné la solution en fonction de mon programme et que j'ai pu tester (que je n'utilise pas d'ant-contrib). De toute façon ma réponse pourrait aider certaines personnes qui n'utilisent pas d'ant-contrib comme moi. Cheers
Merci. Exactement mon cas besoin d'une réponse sans ant-contrib. +1
Ne peut pas être utilisé dans maven-antrun-plugin en raison de multiples nœuds.
OriginalL'auteur рüффп
Nous pouvons utiliser
var
tâche pour désactiver la propriété aussi.OriginalL'auteur rashok
Je sais que c'est vieux, mais devrait s'avérer utile pour d'autres personnes à la recherche d'une solution.
à ré-attribuer une propriété sans l'aide de ant-contrib, utilisez macrodef avec un script.
puis n'importe où dans ant, il suffit d'appeler cela comme la balise de propriété
à mettre en Œuvre dans votre version d'origine de xml, il devrait ressembler à ceci:
Cet exemple est donné à titre d'exemple sur l'écriture d'une macro pour remplacer les <var> commande ant-contrib. Dans une situation comme celle-ci, lorsque le <si> commande est utilisé, il est plus logique d'utiliser <var> sinnce ant-contrib est déjà chargé, et <var> peut-être plus rapide dans le traitement.
Espère que cette aide.
Je vous remercie. J'utilise ce type de scripts fréquemment maintenant pour améliorer mon ant environnement sans ajouter des fichiers JAR.
OriginalL'auteur Armand
Il est possible de ré-attribuer la valeur d'une propriété à l'aide de l'ant-contrib 'propertycopy'. C'est une alternative à l'utilisation de ant-contrib Variables.
De cette façon, la propriété de "donner" peut être remplacé.
Être au courant ce qui suppose la propriété tempName n'est pas déjà réglé à une valeur autre que " Jean."
OriginalL'auteur Tim