ho abbastanza sicuro che non c'è un modo per chiamare genericamente un compito per ogni file senza né creare il proprio custom task o utilizzando ant-contrib. Tuttavia ci sono modi per ottenere form per recuperare automaticamente ant-contrib (o un jar personalizzato) in modo da poter ottenere il risultato desiderato. Questo è l'approccio usato da TIBant, che ha un requisito simile (in modo che sia facile per chiunque di contribuire allo sviluppo),
Passo 1: Scaricare Apache Ivy
Apache Ivy può essere utilizzato per recuperare dipendenze come ant-contrib. Io uso le seguenti proprietà formica e bersaglio per scaricare e caricare Ivy
<property name="ivy.install.version" value="2.2.0" />
<property name="ivy.jar.dir" location="${user.home}/.ivy2/jars" />
<property name="ivy.jar.file" location="${ivy.jar.dir}/ivy-${ivy.install.version}.jar" />
<target name="-download-ivy" unless="ivy.downloaded">
<mkdir dir="${ivy.jar.dir}" />
<!-- download Ivy from web site so that it can be used even without any special installation -->
<echo message="installing ivy..." />
<get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar"
dest="${ivy.jar.file}"
usetimestamp="true"
verbose="true" />
</target>
<target name="-check-ivy-downloaded">
<condition property="ivy.downloaded">
<and>
<available file="${ivy.jar.file}" />
<available file="${ivy.jar.dir}/jsch-0.1.44-1.jar" />
</and>
</condition>
</target>
<target name="-load-ivy" depends="-check-ivy-downloaded,-download-ivy" unless="ivy.loaded">
<path id="ivy.lib.path">
<fileset dir="${ivy.jar.dir}" includes="*.jar" />
</path>
<taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path" />
<property name="ivy.loaded" value="true" />
</target>
Fase 2: Aggiungi ant-contrib dipendenza
Ivy utilizza un "file di edera" per specificare le dipendenze.È possibile aggiungere ant-contrib come segue
<dependency org="ant-contrib" name="ant-contrib" rev="1.0b3" transitive="false"/>
un file completo di edera potrebbe assomigliare
<?xml version="1.0" encoding="ISO-8859-1"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info
organisation="org.my"
module="mymodule"
status="release"/>
<dependencies>
<dependency org="ant-contrib" name="ant-contrib" rev="1.0b3" transitive="false"/>
</dependencies>
</ivy-module>
Si potrebbe anche uscita questo file dinamicamente da script di formica utilizzando echoxml
Fase 3: Recupera le dipendenze
Usa Ivy per scaricare ant-contrib
(o wha dipendenze Tever hai specificato)
<target name="retrieve" description="retrieve dependancies with ivy" depends="-load-ivy">
<ivy:retrieve />
<ivy:artifactproperty name="[module].[artifact]" value="lib/[artifact]-[revision].[ext]" />
</target>
Fase 4: Carico ant-contrib
<target name="-load-ant-contrib" depends="retrieve" unless="ant.contrib.loaded">
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="${ant-contrib.ant-contrib}" />
</classpath>
</taskdef>
<property name="ant.contrib.loaded" value="true" />
</target>
Passo 5: Creare il vostro obiettivo che scorre oltre i file utilizzando for
<target name="mytarget" depends="-load-ant-contrib">
<for param="file">
<fileset dir="somedir" includes="..." />
<sequential>
<!-- do stuff with @{file} -->
</sequential>
</for>
</target>
Se hai solo bisogno di scaricare ant-contrib e non voglio t o usa Ivy per gestire altre dipendenze, quindi puoi saltare la maggior parte di quanto sopra e utilizzare semplicemente uno get per scaricare ant-contrib
nello stesso modo di cui sopra download Ivy.
Grazie per la tua risposta !!! –
Non risponde alla mia domanda, ma fornisce una buona soluzione/alternativa al mio problema! Grazie per quello –