5

When developing Maven web applications I usually resort the the jetty-maven-plugin to quickly launch my application for local testing and debugging. Using the launch with m2eclipse has the drawback of not properly including all sources for debugging, even though they are downloaded by Maven ( see Source lookup does not seem to work ).

What is the preferred way to debug Maven web applications in Eclipse? I'd especially appreciate configurations which work with the gwt-maven-plugin.

4

2 回答 2

7

我使用 m2eclipse 开发 Web 应用程序的首选方法是……不使用它。相反,我使用在 Eclipse 中使用 Maven Jetty 插件进行调试中描述的方法,我在下面引用:

步骤1

转到“运行”菜单栏上的“运行/外部工具/外部工具...”菜单项。选择“程序”并单击“新建”按钮。在“主”选项卡上,填写“位置:”作为“”可执行文件的完整路径mvn。对于“工作目录:”,选择与您的 webapp 匹配的工作区。对于“参数:”,添加jetty:run.

移动到“环境”选项卡并单击“新建”按钮以添加一个以值命名的新变量MAVEN_OPTS

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

如果您提供suspend=n而不是 suspend=y您可以立即启动而不运行调试器,并在您真正希望调试的任何时候启动调试器。

第2步

然后,拉起“Run/Debug/Debug ...”菜单项并选择“Remote Java Application”并单击“New”按钮。通过为“项目:”字段选择您的 webapp 项目来填写对话框,并确保您使用的端口号与您在address=上面的属性中指定的端口号相同。

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

根据 Rolf Strijdhorst 在 Maven 邮件列表中提供的说明

停止码头

为了停止码头服务器,应在步骤 2 的调试对话框中选中“允许终止远程 VM”。当码头服务器运行并连接调试器时,您可以切换到调试透视图。在调试视图中,右键单击 Java HotSpot(TM) 客户端 VM[localhost:4000] 并选择终止。这将停止调试器和码头服务器。

于 2009-10-08T10:24:52.737 回答
3

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

如果你真的必须,试试MockRunner来模拟应用服务器。

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

于 2009-10-08T08:41:45.173 回答