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

使用Eclipse和Maven调试打包为WAR的Java web应用程序的最佳方法?,java,eclipse,debugging,maven-2,Java,Eclipse,Debugging,Maven 2,我以前没有构建过JavaWeb应用程序,但我已经完成了足够的测试,Maven正在构建我的WAR文件。这是一个多模块Maven项目,依赖模块都在WAR的WEB-INF/lib目录中有它们的JAR文件 所以一切看起来都很好,但是如何调试呢?我知道如何(从命令行)在我的机器上运行Tomcat中的战争。我还认为我知道如何从命令行设置和运行Maven Jetty插件。但是如何最好地调试…使用Eclipse中我喜欢的所有断点和变量检查 是否应该创建某种启动配置,或者远程连接调试器?Eclipse中有什么东西

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

所以一切看起来都很好,但是如何调试呢?我知道如何(从命令行)在我的机器上运行Tomcat中的战争。我还认为我知道如何从命令行设置和运行Maven Jetty插件。但是如何最好地调试…使用Eclipse中我喜欢的所有断点和变量检查


是否应该创建某种启动配置,或者远程连接调试器?Eclipse中有什么东西可以帮助…比如插件吗

要通过eclipse启用调试:

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

-Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=9999,suspend=n
然后通过Eclipse进行远程调试

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

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

  • rt单击以创建新的
    配置
  • 选择连接类型作为标准 (套接字连接)并添加主机名 和港口
要启动调试,请在服务器运行时打开它---

是否应该创建某种启动配置,或者远程连接调试器?Eclipse中有什么东西可以帮助…比如插件吗

使用(以及您从Extras获得的Maven集成WTP),您可以使用WTP并在调试模式下启动应用程序


作为替代方案,您可以将远程调试器连接到Jetty。请参阅。

如果使用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->Remote Java Application)连接到端口8000,享受良好的调试会话。

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

我已经安装了m2eclipse。如何使用WTP在调试模式下启动我的应用程序?我不知道
mvnDebug
作为Maven启动配置的一部分,有没有一种简单的方法可以从Eclipse启动它?如果要使用mvnDebug,那么应该从命令行启动,而不是从Eclipse启动(尽管可以从Eclipse分离调试器)。