2010-08-06 4 views
1

Je dois exécuter une tâche ant pour chaque ligne d'un fichier donné. Toutes les idées ont apprécié.Comment exécuter une tâche ant pour chaque ligne d'un fichier donné?

+0

Pouvez-vous donner un exemple de ce que vous entendez par "chaque ligne d'un fichier donné"? Bien sûr – JoseK

+0

, supposons un fichier comme: param1 param2 param3 param4 param5 Param6 ... Je voudrais fourmi de lire ce fichier et transmettre les paramètres à une sous-tâche. – SorinS

Répondre

2

J'ai un fichier de propriétés qui définit les processus qui doivent être exécutés. Tout ceci est sur une seule ligne et séparée par des virgules, pas plusieurs lignes comme vous l'avez spécifié. Ce answer montre comment itérer sur un fichier.

env.start=webserver:localhost, dataserver:localhost 

puis dans mon dossier de fourmi qui gère l'exécution de l'application que je donne les résultats suivants

<target name="start-all" description="Start all processes specified in target-info.properties:env.start"> 
     <foreach list="${env.start}" trim="yes" param="process.and.host" target="-start-process"/> 
</target> 

<target name="-start-process"> 
     <property name="colon.separated.pattern" value="([^:]*):([^:]*)"/> 
     <propertyregex property="process" input="${process.and.host}" regexp="${colon.separated.pattern}" select="\1"/> 
     <propertyregex property="host" input="${process.and.host}" regexp="${colon.separated.pattern}" select="\2"/> 
     <condition property="start.target" value="start-${process}" else="-start-process-ssh"> 
      <equals arg1="${host}" arg2="localhost" trim="yes" casesensitive="no"/> 
     </condition> 
     <antcall target="${start.target}"/> 
</target> 

$ {} start.target puis est exécutée pour les processus définis dans la propriété env.start par exemple

<target name="start-webserver" description="Start the webserver on this machine"> 
     <echo>** Starting webserver **</echo> 
     <run-script dir="${project.base.dir}/apache-tomcat" script="${project.base.dir}/apache-tomcat/bin/startup" spawn="yes"> 
      <args> 
       <env key="CATALINA_HOME" value="${project.base.dir}/apache-tomcat"/> 
       <env key="CATALINA_PID" value="${project.base.dir}/apache-tomcat/logs/pid_catalina"/> 
      </args> 
     </run-script> 
</target> 

<target name="start-dataserver" depends="decipher_caldb_password,check-event-seed,run-prestart-sql" description="Start the dataserver on this machine"> 
     <run-calypso process="dataserver" class="calypsox.apps.startup.StartNOGUI" failonerror="yes" 
      args="-class com.calypso.apps.startup.StartDataServer"/> 
</target> 

Je peux commencer tous les processus définis dans env.start en exécutant

ant -f run.xml start-all 
Questions connexes