【问题标题】:Using a GWT + Maven project in Eclipse在 Eclipse 中使用 GWT + Maven 项目
【发布时间】:2012-10-15 03:55:10
【问题描述】:

我在尝试创建一个可以在 Eclipse 中使用的简单 GWT + Maven 项目时遇到了很多问题。这就是我正在做的事情:

  1. 创建一个新的gwt-maven-plugin 项目:

    mvn archetype:generate -q -DarchetypeGroupId=org.codehaus.mojo -DarchetypeArtifactId=gwt-maven-plugin -DarchetypeVersion=2.5.0-rc2 -DgroupId=myGroupId -DartifactId=myArtifactId -Dversion=1.0 -Dmodule=myModule
    
  2. 在Eclipse中打开项目:File => Import... => Existing Maven Projects,然后选择我刚刚创建的项目。

但是,我收到以下错误:

在 Eclipse 中未找到处理 gwt-maven-plugin:2.5.0-rc2:generateAsync 的市场条目。有关详细信息,请参阅帮助。 在 Eclipse 中未找到处理 gwt-maven-plugin:2.5.0-rc2:i18n 的市场条目。有关详细信息,请参阅帮助。

我不明白这个错误信息。我找到了related question on SO,但将建议的片段添加到我的 pom.xml 似乎没有做任何事情。

谁能解释一下?

【问题讨论】:

  • 你试过Project → Maven → 更新项目配置...?顺便说一句,我不建议使用原型。见code.google.com/p/google-web-toolkit/wiki/WorkingWithMaven
  • 更新项目配置并没有解决问题。您链接的教程看起来很有希望,我会试一试。
  • Eclipse 不是建议您“快速修复”这些错误吗?它应该建议您忽略它们,为此它将在您的 POM 的pluginManagement 部分插入适当的配置(类似于 Dvd Prd 的答案)。
  • @ThomasBroyer Thomas,WorkingWithMaven 指南建议使用 starter pom 配置,但所有 pom 都使用请求工厂。是否有更精简的 pom 为 RPC GWT 应用程序提供基本必需品?
  • github.com/tbroyer/gwt-maven-archetypes 等等。我几乎可以肯定有些样本使用 RPC(可能是验证?)

标签: eclipse gwt maven


【解决方案1】:

您应该告诉 m2e 忽略这些警告。一旦你执行了一个目标,async 和 i18n 目标就会自动执行,这只是一个典型的 maven / eclipse 不能一起玩的经典案例。

在项目的构建部分中附加 pluginManagement(在 plugins 元素之后)

   <plugins>
          your  maven plugins here
    </plugins>
        <pluginManagement>
            <plugins>
                <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.codehaus.mojo</groupId>
                                        <artifactId>
                                            gwt-maven-plugin
                                        </artifactId>
                                        <versionRange>
                                            [2.4.0,)
                                        </versionRange>
                                        <goals>
                                            <goal>i18n</goal>
                                            <goal>generateAsync</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore></ignore>
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

最后将文件夹 target/generated-sources/gwt 添加到构建路径

【讨论】:

  • 这消除了这 2 个导入错误,但随后我收到一堆关于缺少类型的构建错误:“消息无法解析为类型”、“GreetingServiceAsync 无法解析为类型”、“ GWT 类型的 create(Class>) 方法引用了缺少的类型 Messages" 等。
  • 确保将 target/generated-source/gwt 文件夹添加到构建路径。这将使 eclipse 找到生成的类。
【解决方案2】:

安装 eclipse m2e (Maven Integration for Eclipse) 插件,而不是从命令行运行。这将使您的生活更轻松。

更新:看看这个Maven GWT 2.0 and Eclipse

【讨论】:

  • m2e 在让 Maven 和 Eclipse 一起对话方面做得非常出色
  • 显然 OP 已经在使用 M2Eclipse:No marketplace entries found… 类型的消息来自 M2E。
  • @eugener - 我在命令行中使用 mvn 只是为了创建一个简单的示例项目。我在尝试将任何 Maven + GWT 项目导入 Eclipse(安装了 m2e)时遇到问题。
猜你喜欢
  • 2016-02-16
  • 2012-06-03
  • 1970-01-01
  • 2012-10-03
  • 2012-02-02
  • 1970-01-01
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多