使用Eclipse调试Grails 3,Spring Boot或Gradle

对于那些主要的IDE是使用Eclipse开发Grails 3应用程序或插件的人来说,这是一篇小文章-仍然在想如何调试其应用程序。

首先,要澄清一下:没有“ Grails”调试,现在只有Grails 3和Spring Boot和Gradle。任何调试此类应用程序的方法都可以调试Grails 3应用程序。

关于这个主题,有很多SO帖子和Google热门信息,所以我也将本帖子创建为对自己和他人的简短“最简单的解决方案”摘要。

在一些Eclipse版本中,至少在常规Java捆绑包中附带了Eclipse Buildship插件 ,这使我可以在IDE内使用Gradle做很多事情,这是Grails 3的基础。 在执行任何Gradle任务(例如在Grails 3应用程序上执行bootRun如果我也可以使用Buildship进行调试这将非常有用

好吧,在撰写本文时,仍然没有这样的事情: 自2015年以来,使用Buildship调试Web应用程序就已经在路线图上。 您可以用它启动Gradle,但还不能调试它。

因此,一种简单的调试方法是: Eclipse的远程Java应用程序调试功能+调试模式下的Gradle

尝试使用新的Grails 3.2.7 hello-world应用程序。 (在使用Oracle JDK 8和Eclipse Oygen(4.7)的MacOS上-但这并不重要)

只需2个步骤:

  1. 使用./gradlew bootRun --debug-jvm以调试模式启动JVM
  2. 在Eclipse中创建连接到早期JVM的远程Java应用程序启动配置

使用gradle bootRun --no-daemon -Dorg.gradle.debug=true确实允许Eclipse以调试模式进行连接,但是Eclipse不会在任何断点处暂停。

举个例子

假定一个干净的Grails 3.2.7应用程序。

BootStrap.groovy添加一行,并在其上设置一个断点


使用带有--debug-jvm参数的Gradle包装器(或外部Gradle)以调试模式启动应用程序。

localhost:hello-world tvinke$ ./gradlew bootRun --debug-jvm
Starting a Gradle Daemon (subsequent builds will be faster)
:compileJava NO-SOURCE
:compileGroovy
:buildProperties UP-TO-DATE
:processResources
:classes
:findMainClass
:bootRun
objc[12520]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java (0x1041d24c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x10429a4e0). One of the two will be used. Which one is undefined.
Listening for transport dt_socket at address: 5005
> Building 85% > :bootRun

在他看来, 该应用程序停止运行 ,表明它在端口5005侦听,并且直到连接了调试器后,它才会继续(根据设计)。

在Eclipse中创建一个调试配置 (在Debug Configuration下添加一个Remote Java Application条目)-将默认值保留在localhost ,但是将端口更改为5005。

将Eclipse附加到正在等待的JVM,然后使用Debug按钮开始调试。

该应用程序继续启动。 并且实际上停止了我们的断点

将来支持使用Eclipse Buildship进行调试

Eclipse Oxygen当前随Buildship 2.0版一起提供。 Buildship何时获得更新,从而可以在IDE中调试Gradle? 在Bugzilla票证 (已移至新的#249 GitHub问题)中没有计划像在常规Java应用程序中那样在Eclipse中获得“ Debug As…”选项。

正如一位开发人员所说:

为此增加便利固然很好,但是还有其他更重要的事情,例如复合构建支持,Kotlin支持,具有正确的运行时类路径等。

Eclipse中还有其他方法吗?

一些人试图从Spring更新站点在Eclipse Mars中安装Spring IDE Core ,并调试作为一个Spring Boot App配置的Grails应用程序-但我再也无法在Eclipse Oxygen下进行此操作。 缺少/失败的依赖关系将阻止一切。

当然,Eclipse可能还有其他方法(也许使用其他Gradle集成),如果您找到了一种方法,请告诉我!

翻译自: https://www.javacodegeeks.com/2017/03/debugging-grails-3-spring-boot-gradle-eclipse.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值