Debugging Grails 3, Spring Boot or Gradle with Eclipse

This is a small post for those who’s primary IDE is Eclipse for developing Grails 3 apps or plugins — and are still wondering how to debug their application.

First of all, to clarify: there’s no “Grails” debugging, it’s just Spring Boot and Gradle these days, with Grails 3. Any way to debug these kind of applications allows you to debug a Grails 3 application.

There’s lots of SO posts and Google hits about this subject, so I’m creating this post also as a short “simplest solution” summary for myself and for others.
Continue reading “Debugging Grails 3, Spring Boot or Gradle with Eclipse”

GGTS: Clean up Grails 2.0 output

GGTS logoHave you ever had in Groovy/Grails Tool Suite (GGTS) that console output, by a running Grails application, which is exactly the same as the previous output, just isn’t displayed?

This can often be seen with println statements for debug-purposes e.g. in a Controller, which you think should output some line to the console every time, but simply doesn’t.

class TestController {
	def index() { 
		println "index called"
	}
}

When http://localhost:8080/test/test/index is invoked repeatedly in the browser, you just keep seeing only the first occurence.

....index called

When the same message repeatedly is sent to the console a certain convenience feature of GGTS swallows some output – if it looks the same. It has to do with the – since Grails 2.0 introduced – ANSI codes to make some output to the console coloured or re-appear on the same line.

Kris de Volder gives a nice example in JIRA issue STS-3499 about how multiple lines such as

Resolving Dependencies.
Resolving Dependencies..
Resolving Dependencies...
Resolving Dependencies....

are supposed to ‘rewrite over themselves’ on ANSI-supported consoles, so you’d only see

Resolving Dependencies...<increasing periods>

on the same line.

Output in the GGTS non-ANSI-enabled console is stripped from these codes – which would result in additional output which some people find unpleasant. So GGTS uses a workaround – which is enabled by default – and strips the beginning of the output which matches previous output and only print the remainder.

So if you were wondering why

class BootStrap {
	def init = { servletContext ->
		['A', 'B', 'B'].each { println it }
	}
}

would only print

|Running Grails application
A
B
|Server running. Browse to http://localhost:8080/test

instead of

|Running Grails application
A
B
B
|Server running. Browse to http://localhost:8080/test

you know now this is not a bug 🙂

You have to disable the option ‘Clean Grails 2.0 output‘ in the GGTS preferences under Groovy > Grails > Grails Launch to prevent this swallowing-behaviour.

Now your output appears in GGTS when you want it to appear 🙂

Grails 2.4 Released: Installing Groovy-Eclipse Compiler 2.3 in Eclipse/GGTS

GGTS logoThis month has been interesting: on the 7th Groovy 2.3.0 has been released, followed up by Grails 2.4 a few days ago. Great work!

UPDATE: GGTS 3.6.0 M1 has been released, which already includes support for Groovy 2.3.

If you’re an Eclipse or Groovy/Grails Tool Suite (GGTS) user, you might want to install the Groovy/Eclipse Compiler to have the IDE make use of all the Groovy 2.3 features. Now if you’ve downloaded the latest GGTS version – which at the moment is 3.5.1 – and created a brand new Grails 2.4 project, the Markers view might have alerted you to the following:

Groovy: compiler mismatch Project level is: 2.3 Workspace level is 2.1
Groovy compiler level expected by the project does not match workspace compiler level.

Consequently, also 1 Java problem is reported about a java.lang.NoSuchMethodError in an AssetMethodTagLib.groovy of the new Asset Pipeline Plugin shipping with Grails 2.4

You might be tempted to follow the Quick Fix and set the project to 2.3 but the settings screen doesn’t allow you to select 2.3 yet.

No Groovy 2.3 compiler

Fix it by installing the Groovy Compiler 2.3 for Groovy/Eclipse.

Installing the Groovy Compiler in GGTS

  1. Inside GGTS, on the Spring Dashboard go to Manage > IDE Extensions.
  2. Search for the keyword “groovy”, find the Groovy 2.3 Compiler for Groovy-Eclipse
  3. Select it and press Install. Restart when asked.

Installing the Groovy Compiler in GGTS (alternative) or Eclipse

  1. Inside GGTS/Eclipse, go to Help > Install New Software…
  2. Work with the snapshot Update Site of the Groovy/Eclipse project: http://dist.springsource.org/snapshot/GRECLIPSE/e4.3/
  3. Under Extra Groovy compilers (Optional) mark Groovy Compiler 2.3 Feature
  4. Install. Continue. Restart when asked.

After installation the compiler became the default for the entire workspace.

Groovy 2.3 installed

And you’re done. Problems are gone. Go work on your new Grails application 🙂