Дружим GWT, Sonar + Clover

    Любите ли вы GWT так, как люблю его я? Недавно возникла задача, повесить Sonar на проект, где используется GWT. Проблема возникла в тот момент, когда врубается Clover. Подробности этой истории под катом.

    Итак, в чем соль. Clover копирует сорцы в папку target, дополняет их своим кодом и анализирует, после чего в дело вступает gwt-maven-plugin, который все это дело радостно пытается скомпилировать и мы получаем ошибку вида:
    No source code is available for type ....; did you forget to inherit a required module?

    И в качестве не найденного класса выступает один из классов Clover. И это значит, что мы не объявили импорт Clover в *.gwt.xml модуле. Однако неприятно. Решение было найдено относительно быстро.

    В блоке properties объявляем переменную:
    <properties>
    ...
    <gwt.module>MyModule.gwt.xml</gwt.module>
    ...
    </properties>
    


    Тюним наш gwt-maven-plugin (я использую 2.2.0):

    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>gwt-maven-plugin</artifactId>
    <version>2.2.0</version>
    <executions>
    <execution>
    <configuration>
    <module>${gwt.module}</module>
    </configuration>
    <goals>
    <goal>compile</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    


    Теперь в тестовых ресурсах создаем еще один модуль и называем его Empty.gwt.xml:

    <module rename-to="empty">
    </module>
    


    Теперь создаем профиль для Sonar, в котором переопределяем значение модуля:

    <profiles>
    <profile>
    <id>Sonar</id>
    <properties>
    <gwt.module>Empty.gwt.xml</gwt.module>
    </properties>
    </profile>
    </profiles>
    


    Готово, теперь этот модуль нужно включать при запуске под Sonar, делается это так -P Sonar.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое