Esiste un'attività ANT che eseguirà un blocco solo se esiste un determinato file? Ho il problema che ho uno script ant formico che dovrebbe fare qualche elaborazione speciale ma solo se è presente un file di configurazione specifico.Task Ant per eseguire una destinazione Ant solo se esiste un file?
risposta
<target name="check-abc">
<available file="abc.txt" property="abc.present"/>
</target>
<target name="do-if-abc" depends="check-abc" if="abc.present">
...
</target>
Available è un nome non così ovvio per quello che fa. Mi sono ulteriormente confuso dal fatto che google mostra che le persone che scrivono i loro tag –
non sembrano funzionare con Ant 1.6.2. – djangofan
Ha funzionato bene per me (Ant 1.8.2). Grazie. –
Questo potrebbe rendere un po 'più senso da un punto di vista di codifica (disponibile con la formica-contrib: http://ant-contrib.sourceforge.net/):
<target name="someTarget">
<if>
<available file="abc.txt"/>
<then>
...
</then>
<else>
...
</else>
</if>
</target>
Questo è disponibile solo in ant-contrib, penso. –
Perfetto. Grazie, Adam. –
Preferisco decisamente questa sintassi –
Dal 1.8.0 Ant c'è a quanto pare anche resourceexists
Da http://ant.apache.org/manual/Tasks/conditions.html
Test di una risorsa per l'esistenza. since Ant 1.8.0
La risorsa effettiva da testare è specificata come elemento nidificato.
Un esempio:
<resourceexists> <file file="${file}"/> </resourceexists>
Stavo rielaborare l'esempio da quanto sopra buona risposta a questa domanda, e poi ho trovato questo
A partire dal 1.8.0 Ant, è può invece utilizzare l'espansione della proprietà ; un valore di true (o on o sì) abiliterà l'articolo, mentre false (o off o no) lo disabiliterà . Altri valori sono ancora assunto come nomi di proprietà e quindi l'elemento è abilitato solo se la proprietà denominata è definita.
Rispetto al vecchio stile, questo ti dà ulteriore flessibilità, perché si può escludere la condizione dalla riga di comando o il genitore script:
<target name="-check-use-file" unless="file.exists"> <available property="file.exists" file="some-file"/> </target> <target name="use-file" depends="-check-use-file" if="${file.exists}"> <!-- do something requiring that file... --> </target> <target name="lots-of-stuff" depends="use-file,other-unconditional-stuff"/>
dal manuale di formica a http://ant.apache.org/manual/properties.html#if+unless
Speriamo che questo esempio sia utile per alcuni. Non stanno usando resourceexists, ma presumibilmente si potrebbe .....
Nota che 'if =" $ {file.exists} "' dovrebbe essere sostituito con 'if =" file.exists "' come 'if' e' unless' controllano solo l'esistenza della proprietà per nome, non il suo valore. – Vadzim
@Vadzim Come la risposta menzionata, funziona solo in Ant 1.8 e 1.8 supporta l'espansione delle proprietà. http://ant.apache.org/manual/properties.html#if+unless –
penso che il suo valore fa riferimento a questa risposta simile:? https://stackoverflow.com/a/5288804/64313
Ecco una un'altra soluzione rapida. Esistono altre varianti possibili su questo utilizzando il tag <available>
:
# exit with failure if no files are found
<property name="file" value="${some.path}/some.txt" />
<fail message="FILE NOT FOUND: ${file}">
<condition><not>
<available file="${file}" />
</not></condition>
</fail>
si può fare ordinando di fare l'operazione con un elenco di file con nomi uguali al nome (s) è necessario. È molto più semplice e diretto che creare un bersaglio speciale. E non hai bisogno di strumenti aggiuntivi, solo pura Ant.
<delete>
<fileset includes="name or names of file or files you need to delete"/>
</delete>
Verificare utilizzo di filtri Nome file come "DB _ */**/*. Sql"
Ecco una variante per eseguire un'azione, se uno o più file esistono corrispondente ad un carattere jolly filtro. Cioè, non si conosce il nome esatto del file.
Qui, siamo alla ricerca di file "* .sql" In ogni sotto-directory chiamata "DB_ *", in modo ricorsivo. È possibile regolare il filtro in base alle proprie esigenze.
NB: Apache Ant 1.7 e versioni successive!
Ecco l'obiettivo di impostare una proprietà se sono presenti file corrispondenti:
<target name="check_for_sql_files">
<condition property="sql_to_deploy">
<resourcecount when="greater" count="0">
<fileset dir="." includes="DB_*/**/*.sql"/>
</resourcecount>
</condition>
</target>
Ecco un bersaglio "con riserva", che funziona solo se sono presenti file:
<target name="do_stuff" depends="check_for_sql_files" if="sql_to_deploy">
<!-- Do stuff here -->
</target>
- 1. eseguire task Ant se due condizioni sono soddisfatte
- 2. Esegui task Ant con Maven
- 3. Ant riuscito anche quando Ant Task non riesce
- 4. multipla dipende in task ant
- 5. Jenkins non esegue il task Ant
- 6. Passare argomenti da 'maven' a task ant
- 7. Come impostare una proprietà Ant solo se è disinserita
- 8. Utilizzare Ant per eseguire solo test JUnit specifici
- 9. Descrizione dell'eco di destinazione in Ant
- 10. ANT - Esegui una singola destinazione ma senza dipendenze
- 11. Ant Ant Android
- 12. Task Ant per copiare in Windows Share (SMB)
- 13. Ant - copia solo file non directory
- 14. Task FTP Ant non riuscito: java.net.SocketException
- 15. Task Ant per automatizzare l'avvio del mio server e dell'applicazione
- 16. Posso scrivere un task ant che prende i parametri quando viene eseguito da un altro task ant?
- 17. ant per rimuovere file da un jar
- 18. Come trovare una risorsa JNDI all'interno del task hibernatetool Ant
- 19. configure ant per scala
- 20. Eclipse Mars: riferimenti Task ANT mancante libreria SWT
- 21. C'è un modo per eseguire Checkstyle solo su file .java SENZA ANT?
- 22. Ottenere ANT per scp solo file nuovi/modificati
- 23. ANT sql task: come eseguire SQL e PL/SQL e si nota un errore di esecuzione?
- 24. Rimozione Data Commento di Apache Ant PropertyFile Task
- 25. Esecuzione di un file .cmd da Ant
- 26. riferimento alla posizione dello script ant all'interno del file ant
- 27. Come eseguire XSLT 2.0 con ant?
- 28. Come verificare se una proprietà ha un valore in Ant
- 29. ant scp failure
- 30. scorrendo una directory con Ant
Vedi anche [Come usa il jolly nel comando Disponibile di Ant] (http://stackoverflow.com/questions/1073077/how-to-use-wildcard-in-ants-available-command/) – Vadzim