Любите ли вы 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 объявляем переменную:
Тюним наш gwt-maven-plugin (я использую 2.2.0):
Теперь в тестовых ресурсах создаем еще один модуль и называем его Empty.gwt.xml:
Теперь создаем профиль для Sonar, в котором переопределяем значение модуля:
Готово, теперь этот модуль нужно включать при запуске под Sonar, делается это так -P Sonar.
Итак, в чем соль. 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.
