diff --git a/spring-boot-cli/samples/template.groovy b/spring-boot-cli/samples/template.groovy index 1a4ce642137..b23bee10102 100644 --- a/spring-boot-cli/samples/template.groovy +++ b/spring-boot-cli/samples/template.groovy @@ -8,6 +8,7 @@ class Example implements CommandLineRunner { @Autowired private MyService myService + @Override void run(String... args) { print template("test.txt", ["message":myService.sayWorld()]) } diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/SpringMvcCompilerAutoConfiguration.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/SpringMvcCompilerAutoConfiguration.java index c0b9a1bbbe3..34727c3cb3f 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/SpringMvcCompilerAutoConfiguration.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/SpringMvcCompilerAutoConfiguration.java @@ -51,7 +51,7 @@ public class SpringMvcCompilerAutoConfiguration extends CompilerAutoConfiguratio "org.springframework.web.servlet.config.annotation", "org.springframework.web.servlet", "org.springframework.web.servlet.handler", "org.springframework.http", - "org.springframework.ui"); + "org.springframework.ui", "groovy.text"); imports.addStaticImport(GroovyTemplate.class.getName(), "template"); } diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/groovy/GroovyTemplate.java b/spring-boot-cli/src/main/java/org/springframework/boot/groovy/GroovyTemplate.java index 984c7fb3a2d..3cf674bf34e 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/groovy/GroovyTemplate.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/groovy/GroovyTemplate.java @@ -16,11 +16,14 @@ package org.springframework.boot.groovy; +import groovy.lang.Writable; import groovy.text.GStringTemplateEngine; import groovy.text.Template; +import groovy.text.TemplateEngine; import java.io.File; import java.io.IOException; +import java.io.StringWriter; import java.net.URL; import java.util.Collections; import java.util.Map; @@ -41,7 +44,15 @@ public abstract class GroovyTemplate { public static String template(String name, Map model) throws IOException, CompilationFailedException, ClassNotFoundException { - return getTemplate(name).make(model).toString(); + return template(new GStringTemplateEngine(), name, model); + } + + public static String template(TemplateEngine engine, String name, Map model) + throws IOException, CompilationFailedException, ClassNotFoundException { + Writable writable = getTemplate(name).make(model); + StringWriter result = new StringWriter(); + writable.writeTo(result); + return result.toString(); } private static Template getTemplate(String name) throws CompilationFailedException,