Ошибка компиляции GWT с Maven: экземпляр Presenter не определен. Забудете комментировать @Presenter или @EventHandler?
Мигрируйте из Ant Ivy в инструмент сборки Maven.
Маленькая информация о проекте:
- Мультимодульный проект с несколькими артефактами развертывания.
- На Ant Ivy все нормально, компиляция и развертывание проходит нормально.
Миграция на Maven проходит успешно с версией 2.7.0 GWT. После увеличения версии до 2.8.1, смотрел, чтобы получить ошибку компиляции gwt.
[ERROR]com.example.gwt.client.module.user.GWTEventBus:
Method createInfoPage: No instance of com.example.gwt.client.module.user.presenter.
info.InfoPresenter is defined. Have you forgotten to annotate your event handler
with @Presenter or @EventHandler?
[INFO] at com.mvp4g.util.config.loader.annotation.EventsAnnotationsLoader.
buildPresentersAndEventHandlers (EventsAnnotationsLoader.java:425)
...long stack trace ...
at com.google.gwt.dev.Compiler.main(Compiler.java:125)
[INFO][ERROR] Errors in 'com.example.gwt.GWTModule'
[INFO][ERROR] Line 137: Failed to resolve 'com.mvp4g.client.Mvp4gModule' via deferred binding
Строка 137 содержит Mvp4gModule module = GWT.create(Mvp4gModule.class);
Попытки исправить:
1. Сравнил сопоставленные зависимости classpath от Ant Ivy с Maven classpath, все то же самое. Все версии зависимостей и плагинов в порядке, без каких-либо конфликтов.
2. Пробовал с двумя разными плагинами gwt maven, но получаю одинаковую ошибку с любыми конфигурациями:
<plugin>
<groupId>net.ltgt.gwt.maven</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>1.0-rc-6</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>import-sources</goal>
<goal>compile</goal>
</goals>
</execution>
</executions>
<configuration>
<moduleName>com.example.gwt.GWTModule</moduleName>
<jvmArgs>
<jvmArg>-Xmx768M</jvmArg>
<jvmArg>-Xss10M</jvmArg>
</jvmArgs>
<failOnError>false</failOnError>
<sourceLevel>1.8</sourceLevel>
<compilerArgs>
<arg>-compileReport</arg>
<arg>-XcompilerMetrics</arg>
</compilerArgs>
<warDir>${project.build.directory}/${project.build.finalName}</warDir>
<classpathScope>compile+runtime</classpathScope>
<startupUrls>
<startupUrl>Validation.html</startupUrl>
</startupUrls>
</configuration>
</plugin>
Главная странность в том, что Ant успешно компилируется. Цель Ant compile-gwt имеет ту же конфигурацию и аргументы, что и плагин Maven gwt-plugin.