我用mvn原型:生成-DarchetypeGroupId=org.codehaus.mojo-DarcheypeArtifactId=gwt-maven插件-Darchetype版本=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);
您有两个选项:
-
您可以添加特殊的(非琐碎的)org.eclipse.m2e:生命周期映射插件配置到您的POM。请参阅此处:为什么我收到";插件执行不包括在GWT的生命周期配置中";错误
-
或者在EclipsePOM编辑器中将此问题标记为忽略,然后调用
mvn gwt:i18n
。你可以为它创建一个方便的快捷启动程序。Eclipse会记住你的决定,忽略什么,它会为项目永久存储到.settings目录中。
在典型的开发过程中,本地化消息不会经常更改,因此第二种选择通常更方便,并加快了构建速度。
这适用于大多数GWT插件目标!即使是GWT编译也很少是必要的,因为DevMode直接处理Java代码,而不是生成JavaScrip。因此,在实践中,你必须在一开始就至少喊一次所有的目标,然后在没有目标的情况下生活几周;基本的EclipseJDT编译就足够了。
如果您稍后决定不在实际应用程序中使用GWT本地化框架,那么您可以从POM中完全删除目标i18n。调用目标i18n生成(普通)Sample.java
所需的文件{project}/target/generated-sources/gwt/my/code/client/Messages.java
。
此外,该代码还包含找不到的GreetingServiceAsync。
从命令行或Eclipse Run as -> Maven install
菜单运行构建mvn install
。在命令行的情况下,mvn gwt:generateAsync
应该足够了。这个目标产生了{project}targetgenerated-sourcesgwtmycodeclientGreetingServiceAsync.java
,而这正是你所缺少的。Eclipse并没有自动为您做这件事,因为它被前一期i18n所阻止,而生命周期配置没有涵盖它。所以,是的,你提到的问题是相互关联的。