Eclipse / Maven的GWT开发模式

时间:2010-08-25 17:23:07

标签: eclipse gwt maven-2

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

我已遵循此处Maven GWT 2.0 and 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

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

[WARN] No startup URLs supplied and no plausible ones found -- use -startupUrl

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

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

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

更新

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

当我运行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"

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

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

3 个答案:

答案 0 :(得分:4)

  

描述:web.xml文件不存在

gwt-maven-plugin创建了一个带有'war'打包格式的项目(它是一个Web应用程序,所以这里没有任何反感)。此项目的Web.xml将位于'src / main / webapp'文件夹下,该文件夹将被复制到'war'目录(设置为输出目录),作为maven构建生命周期中“资源”阶段的一部分 - 周期。你应该总是使用

  

mvn compile gwt:run

  

mvn install gwt:run

以便复制资源,编译所有java文件并调用gwt:compile(因为它自动绑定到'compile'阶段)

  

[警告]未提供任何启动网址且找不到合理的网址 - 请使用-startupUrl

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

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

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

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

答案 1 :(得分:0)

我也给了我这个警告:

  

没有提供启动网址且找不到合理的网址

当我跟踪this gwt tutorial

在该屏幕截图中,没有“生成示例代码”复选框。在我的IDE(sdk 2.5)中,它是,所以我没有选中......

我没有创建任何serverclient个包,我手动创建了client,如教程所需。直到该步骤的教程没有说我必须有一个server包。项目中缺少这个和他的配置。

答案 2 :(得分:0)

如果右键单击项目并转到属性 - > Google - > Web应用程序,您的WAR目录可能类似于warsrc/main/webapp/WEB-INF/classes

将其更改为src/main/webapp。 同时取消选中“从此目录启动和分发...”旁边的框

这就是为我解决这个问题的原因。它还同时修复了“找不到gwt-servlet.jar”的问题。