2

我用 mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo -DarchetypeArtifactId=gwt-maven-plugin -DarchetypeVersion=2.5.0 创建了一个 GWT 项目

在 eclipse juno 中导入项目。

我得到的第一个错误是:生命周期配置未涵盖插件执行:org.codehaus.mojo:gwt-maven-plugin: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);
4

1 回答 1

3

你有两个选择:

  1. 您可以将特殊的(非平凡的)org.eclipse.m2e:lifecycle-mapping 插件配置添加到您的 POM。请参阅此处:为什么我会收到“使用 GWT 的生命周期配置未涵盖插件执行”错误?

  2. 或者在 Eclipse POM 编辑器中将此问题标记为忽略,然后调用mvn gwt:i18n. 您可以为它创建一个方便的快捷方式启动器。Eclipse 会记住您决定忽略哪些内容,并将其永久存储到项目的 .settings 目录中。

在典型的开发过程中,本地化消息不会经常更改,因此第二个选项通常更方便并加快构建速度。

这适用于大多数 GWT 插件目标!即使是 GWT 编译也很少需要,因为 DevMode 直接使用 Java 代码而不是生成的 JavaScrips。所以在实践中,你必须在开始时至少调用一次所有目标,然后在没有它们的情况下存活数周;基本的 Eclipse JDT 编译就足够了。

如果您后来决定不在您的真实应用程序中使用 GWT 本地化框架,那么您可以从 POM 中完全删除目标 i18n。调用目标 i18n 生成{project}/target/generated-sources/gwt/my/code/client/Messages.java(vanilla) 所需的文件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 问题所阻止,而生命周期配置未涵盖该问题。所以是的,你提到的问题是相关的。

于 2013-06-01T01:35:40.433 回答