我创建了一个GWT项目 mvn archetype:generate -DarchetypeGroupId = org.codehaus.mojo -DarchetypeArtifactId = gwt-maven-plugin -DarchetypeVersion = 2.5.0
在eclipse juno中导入项目。
我得到的第一个错误是: 生命周期配置未涵盖的插件执行:org.codehaus.mojo:gwt-maven- 插件:2.5.0:i18n(执行:默认,阶段:生成源)
在pom文件中。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>2.5.0</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test</goal>
<goal>i18n</goal>
<goal>generateAsync</goal>
</goals>
</execution>
</executions>
<!-- Plugin configuration. There are many available options, see
gwt-maven-plugin documentation at codehaus.org -->
<configuration>
<runTarget>dashboard.html</runTarget>
<hostedWebapp>${webappDirectory}</hostedWebapp>
<i18nMessagesBundle>com.farheap.jsi.dashboard.client.Messages</i18nMessagesBundle>
</configuration>
此外,代码还包含无法找到的GreetingServiceAsync。
private final GreetingServiceAsync greetingService = GWT.create(GreetingService.class);
答案 0 :(得分:3)
您有两种选择:
你可以添加特殊的(非平凡的)org.eclipse.m2e:生命周期映射插件 配置到您的POM。见这里:Why am I receiving a "Plugin execution not covered by lifecycle configuration with GWT" error?
或者将此问题标记为在Eclipse POM编辑器中被忽略,然后调用mvn gwt:i18n
。你可以为它创造一个方便的捷径发射器。 Eclipse会记住您的决定忽略什么,它会将其永久存储到项目的.settings目录中。
在典型开发过程中,本地化消息不会经常更改,因此第二个选项通常更方便,并加快构建速度。
这适用于大多数GWT插件目标!甚至GWT编译也很少需要,因为DevMode直接使用Java代码而不是生成JavaScrips。所以在实践中,你必须在开始时至少召唤一次所有目标,然后在没有它们的情况下过几周;基本的Eclipse JDT编译就足够了。
如果您以后决定不在真实应用中使用GWT本地化框架,那么您可以完全从POM中删除目标i18n。调用目标i18n会生成(vanilla){project}/target/generated-sources/gwt/my/code/client/Messages.java
所需的文件Sample.java
。
此外,代码还包含无法找到的GreetingServiceAsync。
从命令行或mvn install
菜单运行构建Eclipse Run as -> Maven install
。
如果命令行mvn gwt:generateAsync
应该足够了。此目标会生成{project}\target\generated-sources\gwt\my\code\client\GreetingServiceAsync.java
,这就是您所遗漏的内容。 Eclipse没有自动为您执行此操作,因为之前的 i18n未被生命周期配置覆盖而被阻止。是的,你提到的问题是相关的。