Cela me semble un peu tiré par les cheveux, mais y a-t-il une tâche ANT pour regarder un répertoire pour les changements et exécuter une classe ANT particulière quand le répertoire change?Y at-il une tâche ANT pour regarder un répertoire pour les changements?
Répondre
Si des fichiers peuvent uniquement être ajoutés ou modifiés dans le répertoire surveillé, vous pouvez utiliser cette tâche OutOfDate depuis antcontrib.
<property name="watched-dir.flagfile"
location="MUST be not in watched dir"/>
<outofdate>
<sourcefiles>
<fileset dir="watched-dir"/>
</sourcefiles>
<targetfiles>
<pathelement location="${watched-dir.flagfile}"/>
</targetfiles>
<sequential>
<!--Tasks when something changes go here-->
<touch file="${watched-dir.flagfile}"/>
</sequential>
</outofdate>
Si les fichiers peuvent disparaître de la dir regardé, alors vous avez un problème plus complexe, que vous pouvez résoudre en créant la structure de répertoire d'ombre du répertoire regardé et vérifier si son compatible avec le dir observé. Cette tâche est plus complexe, mais je vais vous donner un script pour créer un répertoire d'ombre, comme il est simple:
<property name="TALK" value="true"/>
<property name="shadow-dir"
location="MUST be not in watched dir"/>
<touch
mkdirs="true"
verbose="${TALK}"
>
<fileset dir="watched-dir">
<patterns/>
<type type="file"/>
</fileset>
<!-- That's the tricky globmapper to make touch task work -->
<globmapper from="*" to="${shadow-dir}/*"/>
</touch>
<!--
Due to how touch task with mapped fileset is implemented, it
truncates file access times down to a milliseconds, so if you
would have used outofdate task on shadow dir it would always
show that something is out of date.
Because of that, touching all files in ${shadow-dir} again fixes
that chicken and egg problem.
-->
<touch verbose="${TALK}">
<fileset dir="${shadow-dir}"/>
</touch>
Avec répertoire ombre créée, je vais laisser la tâche de vérifier la cohérence de répertoire un exercice pour le lecteur.
Peu importe si le répertoire cible contient des fichiers plus anciens que le répertoire source. Je veux une tâche ant qui regardera le répertoire et quand je sauve les changements dans le dossier dans l'éditeur, il appellera une tâche particulière de fourmi. – leeand00
Vous pouvez utiliser la tâche Waitfor
pour obtenir ce que vous voulez. Il bloque jusqu'à ce qu'une ou plusieurs conditions (telles que la présence d'un fichier particulier) deviennent vraies.
Vous pouvez combiner la tâche avec un applyfileset selector
<apply executable="somecommand" parallel="false">
<srcfile/>
<fileset dir="${watch.dir}">
<modified/>
</fileset>
</apply>
L'ensemble de fichiers vérifie les fichiers contre une somme de contrôle MD5 stocké pour des changements. Vous devrez mettre ANT dans une boucle afin d'exécuter plusieurs fois cette vérification. c'est facile à faire dans Unix:
while true
> do
> ant
> sleep 300
> done
Oui, il y a une tâche Ant qui le fera:
https://github.com/chubbard/WatchTask
Il faut 1.7+. Il peut regarder n'importe quel nombre de groupes de fichiers et invoquer n'importe quelle cible en fonction du groupe de fichiers dont il provient.
N'a pas une licence ... :( –
@JethroLarson maintenant il.Ajouté le même jour que votre commentaire, il semble. :) – kekkis
n'a pas encore compris comment l'utiliser encore, ne sais pas où pour trouver le JAR leur référencement, pas assez de documentation. – Vadorequest
Eh bien, je n'ai pas trouvé de solution simple à ceci donc j'utilise pour l'instant une commande spécifique à bash: 'inoticoming --foreground ./src/anti \;' –
leeand00