19 votes

Définir une propriété dans une cible fourmi et l'utiliser dans une autre cible

Mon fichier de construction est

<target name="default">  
 <antcall target="child_target"/>  
 <echo> ${prop1}   </echo>  
</target>

<target name="child_target">  
 <property name="prop1" value="val1"/>   
</target>

J'obtiens une erreur qui ${prop1} n'a pas été défini. Comment définir une propriété dans la cible ?

20voto

bkail Points 16610

Antcall crée un nouveau projet. Depuis la documentation de Ant :

La (les) cible(s) appelée(s) sont exécutées dans une nouvelle projet ; soyez conscient que cela signifie propriétés, références, etc. définies par les par les cibles appelées ne seront pas dans le projet appelant.

Utilisez plutôt "depends" :

<project default="default">
  <target name="default" depends="child_target">
    <echo>${prop1}</echo>
  </target>
  <target name="child_target">
    <property name="prop1" value="val1"/>
  </target>
</project>

3voto

Silas Greenback Points 432

Je sais que c'est un vieux problème et qu'il est probablement mort, mais un fichier de propriétés chargé en dehors des cibles mais à l'intérieur du projet pourrait également fonctionner. Android fait cela avec local.properties comme ça :

<?xml version="1.0" encoding="UTF-8"?>
<project name="avia" default="help">

    <!-- The local.properties file is created and updated by the 'android' tool.
         It contains the path to the SDK. It should *NOT* be checked into
         Version Control Systems. -->
    <property file="local.properties" />

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