Eclipse/Maven的GWT开发模式

sdo*_*oca 5 eclipse gwt maven-2

我刚刚开始使用GWT.我使用Eclipse并安装了GWT插件.

我按照Maven GWT 2.0和Eclipse中的指示使用gwt-maven-plugin建立了一个GWT项目.当我运行Maven目标时gwt:compile gwt:run,会启动GWT开发模式,我可以将其中的URL复制到我的浏览器并查看标签.

但是,该项目存在这个问题:

Description: The web.xml file does not exist
Resource: WEB-INF   
Path: /GWTExample/war
Location: Unknown
Type: Google Web App Problem
Run Code Online (Sandbox Code Playgroud)

如果我尝试将项目作为Google Web应用程序运行,我会收到此警告:

[WARN] No startup URLs supplied and no plausible ones found -- use -startupUrl
Run Code Online (Sandbox Code Playgroud)

我可以通过将web.xml复制到war目录来解决问题,但是当作为Google Web App运行时,我仍然会遇到URL问题.

如果我在Eclipse中使用Maven和GWT,我应该忽略web.xml问题并始终通过Maven目标在开发模式下运行应用程序吗?或者有没有办法设置东西,以便我可以作为谷歌Web应用程序运行?

编辑:与上述相关,是否可以调试在开发模式下运行的GWT应用程序gwt:compile gwt:run?我已经为我的应用程序添加了断点,但它并没有停止.我不确定这是我配置错误还是不可能.

更新:

回应Prem的回答......

运行a时compile gwt:run,不会复制web.xml文件.当我运行时install gwt:run,我收到此错误:

[INFO] --- gwt-maven-plugin:1.2:test (default) @ SampleGWT ---
[INFO] using GWT jars from project dependencies : 2.0.4
[INFO] establishing classpath list (scope = test)
[ERROR] java.lang.NoClassDefFoundError: org/codehaus/mojo/gwt/test/MavenTestRunner
[ERROR] Caused by: java.lang.ClassNotFoundException: org.codehaus.mojo.gwt.test.MavenTestRunner
[ERROR]     at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
[ERROR]     at java.security.AccessController.doPrivileged(Native Method)
[ERROR]     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[ERROR]     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
[ERROR]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[ERROR]     at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
[ERROR] Could not find the main class: org.codehaus.mojo.gwt.test.MavenTestRunner.  Program will exit.
[ERROR] Exception in thread "main"
Run Code Online (Sandbox Code Playgroud)

我猜这个bug http://jira.codehaus.org/browse/MGWT-24包含在gwt-maven-plugin的1.2版本中.通常我不会在构建war文件的项目上运行install,但我希望至少可以通过构建周期的测试阶段.

有没有人知道为什么我会在安装时得到这个错误而不是编译目标?另外,我是否应该期望将web.xml文件从src/main/webapp/WEB-INF/web.xml复制到/ war目录?

小智 4

web.xml 文件不存在。

gwt-maven-plugin 创建一个具有“war”打包格式的项目(它是一个 Web 应用程序,所以这里并不奇怪)。该项目的 Web.xml 将位于“src/main/webapp”文件夹下,该文件夹将被复制到“war”目录(设置为输出目录),作为 Maven 构建生命中“资源”阶段的一部分 -循环。你应该总是使用

mvn 编译 gwt:run

或者

mvn 安装 gwt:运行

这样资源就会被复制,所有java文件都会被编译,并且gwt:compile也会被调用(因为它自动绑定到“编译”阶段)

[警告] 未提供启动 URL,也未找到合理的启动 URL -- use -startupUrl

根据您用作参考的 stackoverflow 链接,只有您的 Maven 构建文件是使用startupUrl 设置的。为了使其在 Eclipse 中工作,您必须编辑项目的运行配置,并将“-statupUrl”命令行参数添加到“参数”面板中的现有参数中。

然而,这只是一个警告,它不应该阻止您从 eclipse 运行 GWT 应用程序。如果您在这里也遇到相同的“web.xml”问题,可能是因为您在调用“作为 Web 应用程序运行”之前没有在 IDE 中编译项目。我建议您禁用该项目的“自动构建”选项,并始终手动构建它并调用“GWT 编译”,然后尝试“作为 Web 应用程序运行”

编辑:与上述相关,是否可以调试由 gwt:compile gwt:run 启动的在开发模式下运行的 GWT 应用程序?

通常,您必须使用“远程应用程序”调试配置来远程调试进程。但是我不确定它是否适用于 GWT 项目。