Дублирование предупреждений checkstyle в многомодульном задании jenkins maven

У меня есть работа jenkins maven с агрегатором pom и кучей подмодулей. Когда jenkins отображает предупреждения checkstyle, он делает это так:

  • подмодуль 1: 10 предупреждений
  • подмодуль 2: 10 предупреждений
  • Модуль агрегатора: 20 предупреждений

  • Всего: 40 предупреждений

Другими словами, агрегатор (правильно ли?) объединяет предупреждения, найденные в подмодулях, что не было бы такой большой проблемой, если бы не потому, что общее количество становится в два раза больше, чем должно быть.

Кто-нибудь знает, в чем проблема? Спасибо!


person Miquel    schedule 17.11.2012    source источник


Ответы (2)


Это зависит от того, используете ли вы тип проекта Freestyle или Тип проекта Evil Maven.

Если вы используете фристайл, вам просто нужно установить свой шаблон для checkstyle.xml результатов, чтобы исключить агрегатор или исключить подпроекты.

Если вы используете злого брата, вам может потребоваться настроить конфигурацию «для каждого модуля», чтобы отключить отчеты для дочерних модулей.

Проблема здесь в том, что модуль агрегатора копирует предупреждения из дочерних проектов для создания сводного отчета.

Вы также можете отключить агрегацию, когда задание выполняется на Jenkins.

По сути, это борьба между «магией» автоматического обнюхивания от злого типа проекта и тем, как плагин maven-checkstyle-plugin реализует совокупную отчетность.

person Stephen Connolly    schedule 17.11.2012
comment
Спасибо! Я использую злой тип. Вы, должно быть, потратили много дней на его отладку, чтобы так сильно его ненавидеть! ;) Спасибо за ваш ответ, мне нужно разобраться. Конфигурация для каждого модуля не имеет возможности отключить контрольный стиль, поэтому мне придется оценить, что лучше/проще... - person Miquel; 18.11.2012
comment
Тип Freestyle Project - это ответ. ;-) - person Stephen Connolly; 18.11.2012

Вы можете адаптировать некоторые приемы из здесь< /а>

Добавьте следующее в pom агрегатора:

<project>
  ...
  <profiles>
    ...
    <profile>
      <id>on-jenkins</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <inherited>false</inherited>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    ...
  </profiles>
  ...
</project>

И добавьте -P+on-jenkins к своим целям Maven на работе Дженкинса.

person Stephen Connolly    schedule 18.11.2012
comment
Большое спасибо! Это не помогло: / jenkins по-прежнему старательно проверяет подмодули, даже если checkstyle не запускается на самом pom-агрегаторе. Я начинаю понимать вашу любовь к фристайл-проекту :) - person Miquel; 18.11.2012
comment
Многомодульный портит сборку за вашей спиной. 90%, если время работает и делает то, что вы хотите. Но когда вы достигаете 10%, невозможно исправить или предотвратить его сумасшествие... И тогда люди обвиняют Maven; эй, мы легкая мишень), когда на самом деле это такой тип проекта. На днях я напишу правильную интеграцию maven для Дженкинса... KK хочет, чтобы я это сделал, хотя бы для того, чтобы я не стонал о его проекте типа m2 ;-) - person Stephen Connolly; 18.11.2012
comment
Также дело в том, что вы позволите Дженкинсу выполнить агрегацию, другой вариант - переключиться на плагин нарушений для стиля проверки. (примечание: Питер Рейли, автор нарушений, мой друг, поэтому я могу быть к нему предвзят) в целом я считаю плагин нарушений лучшим вариантом - person Stephen Connolly; 18.11.2012