Comment rechercher une chaîne dans les fichiers avec Ant (assurez-vous que certaines chaînes ne sont pas trouvées dans les fichiers source)
Je voudrais pour rechercher une chaîne dans mes fichiers source avec Ant. (J'aimerais que mon build à l'échec dans le cas de certains de chaîne est trouvé dans mes fichiers source).
Donc, je devrais être capable de: recherche récursive pour une certaine chaîne de caractères dans un ensemble de fichiers.
J'ai déjà trouvé que je peux utiliser loadfile tâche pour vérifier si un modèle de chaîne est trouvée dans un délai d'un fichier. Mais qui semble être au travail & sensible seulement avec un seul fichier.
D'autre part, remplacer tâche serait de fournir de manière récursive rechercher-remplacer. Je suppose que je pourrais le faire avant de les construire et de les remplacer mon string avec quelque chose qui pourrait briser le construire, mais je me demande s'il existe une solution plus propre?
br, Touko
source d'informationauteur Touko | 2010-11-29
Vous devez vous connecter pour publier un commentaire.
Vous pouvez envisager d'utiliser fileset sélecteurs pour ce faire. Les sélecteurs de vous permettre de choisir les fichiers basé sur le contenu, la taille, la possibilité de modification et ainsi de suite. Vous pouvez combiner les sélecteurs de base de nom inclus et exclus, ou patternsets.
Ci-dessous est un exemple. La deuxième fileset est dérivée de la première, avec un sélecteur qui correspond simplement sur le contenu du fichier. Pour les plus sophistiquées correspondance, il existe la
containsregexp
sélecteur. Le résultat est un fileset contenant uniquement les fichiers qui correspondent à la chaîne. Un échec de la tâche avec unresourcecount
condition est ensuite utilisé à l'échec de la construction, à moins que fileset est vide.(Vieille réponse): Si le réglage ou la réutilisation d'filesets pourrait être problématique, voici une illustration d'un relativement alternative simple.
L'idée est de faire une copie des fichiers,
puis remplacez la chaîne que vous souhaitez rechercher
avec une certaine valeur de l'indicateur dans les fichiers copiés.
Cela permettra de mettre à jour l'heure de dernière modification sur n'importe quel fichier correspondant.
Le
jour
tâche peut alors être utilisés pour rechercher les fichiers concernés.Enfin, sauf si aucun des fichiers de correspondance, vous pouvez
fail
la construction.Cela a été très utile pour commencer, mais j'ai un liste de chaînes de caractères qui doit être vérifié dans un fileset.
Mon code actuel jusqu'à présent est:
Qui fonctionne bien, mais comment développez-la de sorte que le ${search4} est lu à partir d'une liste. En fait la liste peut être lu à partir d'un fichier contenant chaque élément de recherche est sur une ligne distincte.
Un peu plus concis variation sur la première partie de @martinclayton réponse: