Группировка и подсчет строки в муравье - PullRequest
0 голосов
/ 18 ноября 2009

У меня следующая проблема. У меня есть что-то вроде 300 Eclipse Plugins. Теперь, как часть ant-скрипта, я хочу прочитать все файлы MANIFEST.MF, а затем найти строку среды выполнения.

Bundle-RequiredExecutionEnvironment: J2SE-1.4

Теперь эта строка имеет несколько возможных значений. Я хочу создать отчет, который перечисляет среду выполнения для каждого плагина. Эта часть на самом деле не проблема, так как я могу использовать какое-то регулярное выражение для ее получения.

Моя проблема в том, что я хочу также создать некую сводку для отслеживания изменений, например:

  • JS2E-1.4: 50 плагинов
  • JS2E-1.5: 150 плагинов
  • JS2E-1.6: 74 плагина

У кого-нибудь есть предложения, как мне это обойти?

РЕДАКТИРОВАТЬ: причина использования ANT в том, что я хочу интегрировать его со скриптом ночной сборки

Ответы [ 4 ]

1 голос
/ 18 ноября 2009

Я бы определенно решил выполнить жестко заданную задачу Ant и разобрать ее на две задачи:

  1. первая задача берет файл jar и выводит файл plugin-info.xml, который содержит различную информацию, например, среду
  2. вторая задача анализирует все эти xml-файлы и создает сводный отчет XML

Это, конечно, сгенерирует (n + 1) XML-файлов для n плагинов, и некоторые найдут это слишком много.

Приятным конечным эффектом этого подхода является то, что вы можете очень легко создавать подробные или сводные отчеты (с некоторой магией XSLT.) Или даже графики.

1 голос
/ 18 ноября 2009

Я бы предложил просто напечатать каждую исполняемую среду в System.out, а затем отправить процесс с помощью «| sort | uniq -c».

1 голос
/ 18 ноября 2009

Вы можете использовать задачу math из проекта ant-contrib

Я должен был это сделать, я, вероятно, пошел бы за какой-нибудь сценарий оболочки или пользовательский код

1 голос
/ 18 ноября 2009

Если бы я делал это сам, я бы, вероятно, просто написал скрипт на Perl.

Если это нужно сделать из Ant, я бы написал для этого задачу Ant.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...