Existe-t-il une tâche ANT qui n'exécuterait un bloc que si un fichier donné existe? J'ai le problème que j'ai un script de fourmi générique qui devrait faire un traitement spécial, mais seulement si un fichier de configuration spécifique est présent.
file
ant
build-automation
Mario Ortegón
la source
la source
Réponses:
Disponible et condition
la source
if
etunless
activent ou désactivent uniquement la cible à laquelle ils sont attachés, c'est-à-dire que les dépendances de la cible sont toujours exécutées. Sinon, cela ne fonctionnerait pas de dépendre d'une cible qui définit la propriété que vous recherchez.<Available>
soit obsolète. J'ai utilisé ceci:<target name="do-if-abc" if="${file::exists('abc.txt')}"> ... </target>
check: nant.sourceforge.net/release/0.85/help/functions/…<available>
c'est obsolète? 2:${file::existst...}
semble ne pas fonctionner avec Ant (Apache ANT 1.9.7)Cela pourrait avoir un peu plus de sens du point de vue du codage (disponible avec ant-contrib: http://ant-contrib.sourceforge.net/ ):
la source
Depuis Ant 1.8.0, il existe apparemment aussi des ressources
De http://ant.apache.org/manual/Tasks/conditions.html
J'étais sur le point de retravailler l'exemple de la bonne réponse ci-dessus à cette question, puis j'ai trouvé ceci
à partir du manuel ant à http://ant.apache.org/manual/properties.html#if+unless
Espérons que cet exemple sera utile à certains. Ils n'utilisent pas resourceexists, mais vous pourriez probablement? .....
la source
if="${file.exists}"
devrait être remplacé parif="file.exists"
asif
etunless
ne vérifier que l'existence de la propriété par son nom, pas sa valeur.Je pense que cela vaut la peine de faire référence à cette réponse similaire: https://stackoverflow.com/a/5288804/64313
Voici une autre solution rapide. Il existe d'autres variantes possibles à ce sujet en utilisant la
<available>
balise:la source
Cochez Utiliser des filtres de nom de fichier comme
DB_*/**/*.sql
Voici une variante pour effectuer une action s'il existe un ou plusieurs fichiers correspondant à un filtre générique. Autrement dit, vous ne connaissez pas le nom exact du fichier.
Ici, nous recherchons des fichiers " * .sql " dans tous les sous-répertoires appelés " DB_ * ", de manière récursive. Vous pouvez ajuster le filtre selon vos besoins.
NB: Apache Ant 1.7 et supérieur!
Voici la cible pour définir une propriété si des fichiers correspondants existent:
Voici une cible "conditionnelle" qui ne s'exécute que si des fichiers existent:
la source
Vous pouvez le faire en ordonnant de faire l'opération avec une liste de fichiers avec des noms égaux au (x) nom (s) dont vous avez besoin. C'est beaucoup plus facile et direct que de créer une cible spéciale. Et vous n'avez besoin d'aucun outil supplémentaire, juste de pure Ant.
Voir: FileSet .
la source