2010-01-07 4 views
2

Проект Maven 2 состоит из нескольких подмодулей. Он структурирован и содержит модули EJB, WAR и Jar. Теперь я хочу использовать упакованный EAR, который содержит все подмодули, как упоминалось выше.Как измерить мультипроект Maven 2 с Cobertura?

Пример:

Interface Maven Project consists of several modules: 
- InterfacePOM --> parent pom 
- InterfaceEAR --> EAR module which does not actual code but is the packaging for Domain, EJB and WAR 
- InterfaceEJB --> EJB module 
- interfaceWAR --> WAR module 
- interfaceDomain --> JAR module 

При использовании Cobertura я могу успешно инструмент всех различные независимые модули, но, что генерируется файлом .ser для каждого модуля. Есть ли способ одновременно использовать EAR-файл enitre? Так что результатом будет один .ser-файл, который я могу использовать?

ответ

3

Я реализовал решение, основанное на ваших предыдущих ответах на Maven 2. Он по-прежнему не очень прост в использовании, но пока все идет хорошо. Реализация выглядит следующим образом:

1. Модифицированных мой родительский POM для создания Cobertura инструментальных классов, давая конкретные profile.This генерирует .ser файлов и инструментальные классы.

2. Присвоенные классы копируются в папку/target/classes с помощью плагина maven-resource, поэтому фактическая упаковка использует инструментальные классы.

3. Поскольку нет модуля широкого .ser файла я вручную объединить эти .ser файлы из файла EJB, WAR, JAR и уха с помощью командной строки, данное решения Cobertura. coberture-merge.bat/.sh

4. Развертывание файла .ser в моем контейнере JBoss, а также развернуть инструментальную EAR.

5. После тестирования я запустить отчет на объединенном .ser файл и вуаля .. это похоже на работу ..

Я, безусловно, будет смотреть в Clover, как решение реализовано несколько руководство ..

3

Короткий ответ: нет (посмотрите на this previous answer для получения более подробной информации). Вам понадобится внешний плагин, например, dashboard (на самом деле, не используйте его, см. Мой предыдущий ответ), XRadar или Sonar для агрегирования отчетов. Но в этой области сонар является явным победителем (этот проект просто скалы), и я бы рекомендовал его без колебаний. Проверьте Nemo, их публичный экземпляр, заберите какой-либо проект и посмотрите на детализацию охвата кода (например, Apache CXF), чтобы получить представление о том, что он может сделать.

UPDATE: Похоже, что я пропустил исходный вопрос, поэтому я соответствующим образом обновляю свой ответ. В принципе, теперь я понимаю вопрос как «как измерить ухо с кобертурой», и это действительно совершенно другая история.

К сожалению, в то время как cobertura консервной инструмент уха, сар, застежка-молния, война, банки, я не думаю, что cobertura-maven-plugin поддерживает это вне коробки, и это может быть лучшим вариантом для использования муравей Cobertura в задача с плагином antrun. См. MCOBERTURA-86, этот thread и этот discussion для получения дополнительной информации об этом (и образец антрана).

TBH, что вы пытаетесь сделать, действительно непросто с точки зрения построения жизненного цикла, упаковки, отчетности и т. Д., И это будет непростая задача из-за отсутствия поддержки плагина cobertura. Я бы подумал об этом дважды (время, потраченное на то, чтобы все это работало против генерируемой ценности) или подумайте о том, чтобы потратить это время (понять деньги), чтобы получить лицензию на клевер (которая предлагает лучшую поддержку для этого).

+0

+1 Да. Кажется, что сонар является только разумным выбором для отчетности. – cetnar

+0

Мы уже используем гидролокатор, но он не предлагает решения для моей конкретной необходимости, я хочу получить информацию о покрытии из контейнера JBOSS, а не только за пределы контейнера. Поэтому, когда Sonar отлично справляется с тестированием модулей, это не решение для моей потребности. – Marco

+0

Это не имеет никакого отношения к Sonar. Сонар объединяет то, что вы даете ему для совокупности. Итак, если вы используете инструмент EAR, разверните его (например, с Cargo) на JBoss и выполните свои интеграционные тесты как часть вашей сборки, Sonar определенно сможет использовать данные, созданные Cobertura. Не ожидайте, что какой-либо инструмент будет делать это магически, вам нужно справиться с этим на уровне maven. –

1

Похоже, что в cobertura-maven-plugin нет задачи для слияния файлов .ser из отдельных проектов в один отчет.

В результате поиска Google появился this feature request and patch для плагина, чтобы добавить задачу слияния, но это не похоже, что оно было принято. One of the comments предлагает использовать the dashboard plugin для достижения того же, у вас может быть некоторый успех.

+0

Единственное решение, о котором я могу думать, - создать несколько .ser-файлов из отдельных подмодулей и попытаться объединить их с помощью инструмента командной строки. Затем подайте это в контейнер JBoss для обогащения данных. – Marco

Смежные вопросы