2009-11-18 4 views
0

J'ai le problème suivant. J'ai quelque chose comme 300 plugins Eclipse. Maintenant, dans le cadre d'un script ant, je veux lire tous les fichiers MANIFEST.MF, puis chercher la chaîne de l'environnement d'exécution.Grouper et compter une chaîne dans Ant

Bundle-RequiredExecutionEnvironment: J2SE 1.4-

Maintenant, cette chaîne a plusieurs valeurs possibles. Je veux créer un rapport qui répertorie l'environnement d'exécution pour chaque plug-in. Cette partie n'est pas vraiment un problème car je peux utiliser une sorte d'expression rationnelle pour l'obtenir.

Mon problème est que je veux aussi créer une sorte de résumé des changements de suivi à un coup d'oeil, quelque chose comme:

  • JS2E-1.4: 50 Plugins
  • JS2E-1.5: 150 Plugins
  • JS2E-1.6: 74 Plugins

Quelqu'un a des suggestions sur la façon dont je pourrais contourner ce problème?

EDIT: La raison de l'utilisation ANT est que je veux l'intégrer avec un script de nightly build

Répondre

1

Je définitivement aller pour tâche Ant codé en dur et décomposer le problème en deux tâches:

  1. la première tâche prend un fichier jar et génère un fichier plugin-info.xml qui contient diverses infos, comme l'environnement
  2. la deuxième tâche parse tous ces fichiers xml et crée un résumé XML rapport

Ce sera bien sûr générer (n + 1) des fichiers XML pour n plugins et certains trouveront cette façon trop.

Le bon effet final avec cette approche est que vous pouvez générer des rapports détaillés ou agrégés très facilement (avec un peu de magie XSLT) ou même des graphiques.

+0

Obtenir un vidage avec l'emplacement MANIFEST.MF et la chaîne n'est pas difficile. Je pense que je vais aller avec la tâche fourmi codée en dur pour le groupement –

1

Si je devais le faire moi-même, je ne serais probablement simplement écrire un script Perl.

Si cela doit être fait depuis Ant, j'écrirais une tâche Ant pour le faire.

1

Je suggérerais juste d'imprimer chaque environnement exécutable sur System.out, puis de post-traiter avec "| sort | uniq -c".

1

Vous pouvez utiliser la tâche math du projet ant-contrib

je devais le faire, je serais probablement aller pour un script shell ou code personnalisé

Questions connexes