无法使用 GWT-maven-plugin 和 gwt 2.2 成功创建项目

red*_*hka 6 java eclipse gwt maven-plugin maven

我正在遵循gwt-maven-plugin的文档以及Google Web Toolkit 博客上的文档来对 GWT 项目进行 mavenized,但没有成功。

使用 eclipse 3.6,我使用原型 gwt-maven-plugin 2.1.0-1 创建一个新的 Maven 项目

我按照Google Web Toolkit 博客此处找到的说明进行操作,但它不起作用。我遇到了一个例外:

java.lang.NoClassDefFoundError:com/google/appengine/tools/enhancer/Enhance
引起原因:java.lang.ClassNotFoundException:com.google.appengine.tools.enhancer.Enhance
    在 java.net.URLClassLoader$1.run(来源未知)
    在 java.security.AccessController.doPrivileged(本机方法)
    在 java.net.URLClassLoader.findClass(来源未知)
    在 java.lang.ClassLoader.loadClass(来源未知)
    在 sun.misc.Launcher$AppClassLoader.loadClass(来源未知)
    在 java.lang.ClassLoader.loadClass(来源未知)
线程“main”中的异常

我在 google eclipse 插件上的 GAE 1.4.2 中使用 gwt 2.2.0。我的 pom.xml 中使用了相同的版本号

这是生成的 pom.xml。它使用 2.1.0 版本的 gwt 但我手动将其更改为 2.2.0

<?xml 版本=“1.0”编码=“UTF-8”?>
<项目 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <!-- 使用 GWT webAppCreator 生成的 POM 文件 -->
  <模型版本>4.0.0</模型版本>
  <groupId>gwt-comet</groupId>
  <artifactId>gwt-comet-5</artifactId>
  <包装>战争</包装>
  <版本>0.0.1-SNAPSHOT</版本>
  <名称>GWT Maven 原型</名称>

  <属性>
    <!-- 设置 GWT 版本的便捷属性 -->
    <gwt版本>2.2.0</gwt版本>
    <!-- GWT 至少需要 java 1.5 -->
    <maven.compiler.source>1.5</maven.compiler.source>
    <maven.compiler.target>1.5</maven.compiler.target>
    <webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
  </属性>

  <依赖关系>
    <依赖关系>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-servlet</artifactId>
      <版本>2.2.0</版本>
      <范围>运行时</范围>
    </依赖>
    <依赖关系>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-用户</artifactId>
      <版本>2.2.0</版本>
      <范围>提供</范围>
    </依赖>  
    <依赖关系>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <版本>4.7</版本>
      <范围>测试</范围>
    </依赖>
  </依赖关系>

  <构建>
    <!-- 在用于开发模式的文件夹中生成已编译的内容 -->
    <outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>

    <插件>

      <!-- GWT Maven 插件 -->
      <插件>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>gwt-maven-plugin</artifactId>
        <版本>2.1.0-1</版本>
        <处决>
          <执行>
            <目标>
              <目标>编译</目标>
              <目标>测试</目标>
              <目标>国际化</目标>
              <目标>generateAsync</目标>
            </目标>
          </执行>
        </处决>
        <!-- 插件配置。有很多可用选项,请参阅 gwt-maven-plugin
          文档位于 codehaus.org -->
        <配置>
          <runTarget>Comet.html</runTarget>
          <hostedWebapp>${webappDirectory}</hostedWebapp>
          <i18nMessagesBundle>fr.client.Messages</i18nMessagesBundle>
        </配置>
      </插件>

      <!-- 在执行 gwt:run 之前复制静态 Web 文件 -->
      <插件>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <版本>2.1.1</版本>
        <处决>
          <执行>
            <阶段>编译</阶段>
            <目标>
              <目标>爆炸</目标>
            </目标>
          </执行>
        </处决>
        <配置>
          <webappDirectory>${webappDirectory}</webappDirectory>
        </配置>
      </插件>

    </插件>
  </构建>

</项目>

感谢您的帮助。

小智 1

我还没有在 GAE 中使用它,但有一个更新版本的 gwt-maven-plugin 2.2。将其设置为 2.2.0 或删除版本标签,它将获取最新版本。您的 pom.xml 中也没有任何对 GAE 的依赖。