2 votes

ANT Comment utiliser les propriétés lexicales dans Ant 1.8 ?

J'ai un script qui ne fonctionne pas parce qu'une fois définie, la propriété est devenue ininscriptible.

<target name="test" >

    <fileset id="dir1" dir="./dir1"/>
    <fileset id="dir2" dir="./dir2"/>

    <pathconvert property="path.converted" refid="dir1"/>
    <echo message="${path.converted}"/>
    <property name="path.converted" value="set this property manually"/>
    <echo>${path.converted}</echo>
    <pathconvert property="path.converted" refid="dir2"/>
    <echo message="${path.converted}"/>
</target>

a toujours renvoyé le même résultat, mais je veux que les échos soient différents.

J'ai lu dans la version 1.8.0 d'Apache Ant que

Local à portée lexicale c'est-à-dire les propriétés qui ne sont définies que à l'intérieur d'une cible, d'un bloc séquentiel ou environnement similaire. Ceci est très très utile à l'intérieur de s où une peut désormais définir une propriété qui disparaîtra une fois que la tâche est terminée.

Comment les utiliser ?

4voto

popalka Points 1178

J'ai trouvé la solution. Utiliser tâche locale

<target name="direct" depends="">

    <fileset id="dir1" dir="./dir1"/>
    <fileset id="dir2" dir="./dir2"/>

    <!--<property name="path.converted" value="0"/>-->
    <local name="path.converted"/>

    <pathconvert property="path.converted" refid="dir1"/>
    <echo message="${path.converted}"/>
    <local name="path.converted"/>
    <property name="path.converted" value="0"/>

    <echo>${path.converted}</echo>
    <local name="path.converted"/>
    <pathconvert property="path.converted" refid="dir2"/>
    <echo message="${path.converted}"/>

</target>

0voto

Mikael Hansen Points 192

Dans l'exemple ci-dessus, j'utiliserais simplement des noms différents pour path.converted.
chemin.converti.1, chemin.converti.2 etc.

Si vous aviez créé une macrodéfense, vous devriez absolument utiliser l'option local tâche de rendre le bien local.

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