使用Eclipse和Maven调试打包为WAR的Java Web应用程序的最佳方法?

时间:2010-09-16 04:36:13

标签: java eclipse debugging maven-2

我之前没有构建过Java Web应用程序,但我已经完成了测试,Maven正在构建我的WAR文件。它是一个多模块Maven项目,依赖模块都将其JAR文件放在WAR的WEB-INF / lib目录中。

所以一切似乎都很好,但如何调试?我知道如何(从命令行)在我的机器上运行Tomcat中的WAR。我也认为我知道如何从命令行设置和运行Maven Jetty插件。但是如何最好地调试...我喜欢Eclipse的所有断点和变量检查?

我应该创建某种启动配置,还是远程连接调试器? Eclipse中有什么东西可以帮助...就像一个插件?

4 个答案:

答案 0 :(得分:19)

如果您使用tomcat / jetty插件运行WAR,请将调试选项传递给Maven:

export MAVEN_OPTS="-Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000" mvn tomcat:run

如果使用常规Tomcat运行WAR,只需在启用JPDA(调试器)支持的情况下运行它:

$TOMCAT_HOME/bin/catalina.sh jpda start

Tomcat 6 JPDA的默认端口为8000。

现在将Eclipse(Debug - >远程Java应用程序)连接到端口8000,享受精细的调试会话。

答案 1 :(得分:3)

通过eclipse启用调试:

我将以下内容传递给Tomcat启动:

-Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=9999,suspend=n

然后通过Eclipse进行远程调试。

  • 转到调试菜单>调试配置

  • 向下滚动以选择远程Java 应用

  • rt点击创建新的
    构造
  • 选择连接类型为标准 (套接字附加)并添加主机名 和港口。

要开始调试,请在服务器运行时打开它.---

答案 2 :(得分:3)

  

我应该创建某种启动配置,还是远程连接调试器? Eclipse中有什么东西可以帮助...就像一个插件?

使用m2eclipse(以及来自Extras的 Maven Integration for WTP install),你可以使用WTP并以调试模式启动你的应用程序。

作为替代方案,您可以将远程调试器连接到Jetty。请参阅Debugging with the Maven Jetty Plugin in Eclipse

答案 3 :(得分:3)

将调试选项添加到$MAVEN_OPTS选项的更好方法,因此不将它们与其他现有选项合并(如果您不想在调试模式下启动应用程序,则必须再次删除这些选项),就是使用Maven开箱即用的调试器mvnDebug,位于其bin目录中,这样mvnDebug jetty:run。这将在调试模式下执行您的应用程序,剩下的是附加调试器。