Voglio eseguire un comando da un file di build Ant, per ogni file in una directory.
Sto cercando una soluzione indipendente dalla piattaforma.
Come faccio a fare questo?
Certo, potrei scrivere uno script in qualche linguaggio di scripting, ma ciò aggiungerebbe ulteriori dipendenze al progetto.
Utilizzare
con un
Foreach richiede ant-contrib .
Esempio aggiornato per i recenti ant-contrib:
Ciò invocherà la “barra” di destinazione con $ {theFile} risultante nel file corrente.
Usa l’attività
Esegue un comando una volta per ogni file. Specificare i file mediante set di file o qualsiasi altra risorsa.
È anche ansible eseguire il comando una sola volta, aggiungendo tutti i file come argomenti in una volta sola. Usa l’attributo parallelo per cambiare il comportamento.
Mi dispiace per essere in ritardo un anno.
Un approccio senza ant-contrib è suggerito da Tassilo Horn (l’ objective originale è qui )
Fondamentalmente, poiché non esiste un’estensione di
Ecco alcuni esempi:
Ecco come utilizzare javascript e l’attività ant scriptdef, non è necessario disporre di ant-contrib perché questo codice funzioni, dato che scriptdef è un’attività di base della formica.
ant-contrib è il male; scrivi un’attività personalizzata ant.
ant-contrib è malvagio perché cerca di convertire le formiche da uno stile dichiarativo in uno stile imperativo. Ma xml fa un linguaggio di programmazione schifoso.
Al contrario, un’attività personalizzata ant consente di scrivere in un linguaggio reale (Java), con un vero IDE, in cui è ansible scrivere test unitari per assicurarsi di avere il comportamento desiderato e quindi fare una dichiarazione pulita nel proprio script di costruzione il comportamento che vuoi
Questo sfogo è importante solo se ti preoccupi di scrivere script di formiche manutenibili. Se non ti interessa la mantenibilità, fai in modo che tutto funzioni. 🙂
jtf
So che questo post è davvero vecchio, ma ora che sono passate alcune versioni di antologie e di formiche c’è un modo per farlo con le funzionalità di base delle formiche e ho pensato di doverlo condividere.
Viene eseguito tramite un macrodef ricorsivo che chiama le attività nidificate (anche altre macro possono essere chiamate). L’unica convenzione è usare un nome di variabile fissa (elemento qui).
@{list} @{list}
Le caratteristiche chiave necessarie dove:
Non sono riuscito a rendere il delimitatore variabile, ma questo potrebbe non essere uno svantaggio importante.
È ansible utilizzare l’attività ant-contrib “per” per eseguire l’iterazione nell’elenco dei file separati da qualsiasi delimitatore, il delimitatore predefinito è “,”.
Di seguito è riportato il file di esempio che mostra questo:
Updating file: @{file}
Fai ciò che blak3r ha suggerito e definisci il tuo percorso di class come questo
dove lib è dove si memorizza il tuo barattolo