2009-10-08 24 views
5

在开发Maven Web应用程序时,我通常使用jetty-maven-plugin快速启动我的应用程序以进行本地测试和调试。与m2eclipse一起使用启动的缺点是没有正确包含所有调试源,即使它们是由Maven下载的(请参阅Source lookup does not seem to work)。使用m2eclipse开发Web应用程序的首选方式

在Eclipse中调试Maven Web应用程序的首选方式是什么?我特别喜欢与gwt-maven-plugin配合使用的配置。

+0

是否还有其他专家使用m2eclipse通过WTP工具来测试和调试eclipse中的webapps? – cetnar 2009-10-08 09:48:42

+0

@cetnar:m2eclipse允许我将maven用于mavenish的所有事情,例如依赖关系,插件等。 – 2009-10-08 11:08:04

回答

7

我用m2eclipse开发web应用程序的首选方法是......不使用它。相反,我用我引用下面Debugging with the Maven Jetty Plugin in Eclipse描述的方法:

步骤1

转到运行/外部工具/外部 工具...“菜单项,在”运行“菜单 栏中选择‘程序’,然后单击 ‘新建’按钮,在‘主’选项卡,在填写 ‘位置:‘可执行对于 ’’的完整路径 你” mvn工作目录:“选择与您的web应用程序相匹配的 工作区。 对于“参数:”添加jetty:run

移动到“环境”选项卡,并 点击“新建”按钮,添加一个名为MAVEN_OPTS新 变量与 值:

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y 

如果提供suspend=n代替 suspend=y你就可以开始立即运行 而不运行调试程序, 在您真正希望调试的任何时候启动调试程序。

步骤2

然后,拉起 “运行/调试/调试 ...” 菜单项,选择 “远程Java应用 ”,然后单击 “新建” 按钮 。 “项目:”通过 选择用于 你的web应用项目在对话框中填写领域,并确保您 你 在上面的address=财产 指定使用同一端口号。

现在你需要做的是 运行/外部工具并选择在 步骤1中创建启动插件maven的工具设置的名称 然后 运行/调试,并选择 的名字调试您在步骤2中设置的设置。

从邮件 列表

停止码头

为了阻止码头服务器 “允许远程VM终止” 应该是 罗尔夫Strijdhorst在Maven的提供说明在 的调试对话框中检查第2步。当您运行码头服务器 并将调试器连接时,您可以切换到 调试视角。 在调试视图中,右键单击Java HotSpot(TM)客户端 VM [localhost:4000]并选择 terminate。这将停止调试器 和码头服务器。

+0

好多了,谢谢。 – 2009-10-10 12:05:42

3

尽量避免编写需要某种容器调试的代码。总是编写可以独立运行的代码,并将其包装在非常薄的层中进行部署(薄层 - >少量代码 - >少量错误)。

如果您确实需要,请尝试MockRunner来模拟应用程序服务器。

除此之外,您可以在项目属性中手动添加源代码。

+0

感谢您的回答。我同意你关于分层的声明,但有时我需要运行整个应用程序来调试集成问题,这就是源查找最有用的时候。 – 2009-10-08 09:07:53

+0

在这种情况下,设置断点并在遇到“缺失源”视图时将源添加到项目属性。在下一个版本的m2eclipse发布之前,这是一项手动工作。 – 2009-10-08 09:16:34