Groovy templating engines providing JSP-style scripting, GString expressions, markup builders, and streaming template capabilities for generating dynamic content from templates with variable substitution and control flow
npx @tessl/cli install tessl/maven-org-codehaus-groovy--groovy-templates@3.0.0Groovy Templates provides a comprehensive set of template engines for generating dynamic content from templates using various approaches. The library supports JSP-style scripting syntax with <% %> blocks and <%= %> expressions, GString-style variable interpolation, XML template processing with DOM manipulation, markup builders for generating structured content, and high-performance streaming templates for large-scale content generation.
implementation 'org.codehaus.groovy:groovy-templates:3.0.25'<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-templates</artifactId>
<version>3.0.25</version>
</dependency>import groovy.text.*;
import groovy.text.markup.*;import groovy.text.SimpleTemplateEngine;
import groovy.text.Template;
import java.util.HashMap;
import java.util.Map;
// Create template engine
SimpleTemplateEngine engine = new SimpleTemplateEngine();
// Create template from string
String templateText = """
Dear <%= firstname %> ${lastname},
We <% if (accepted) print 'are pleased' else print 'regret' %> \\
to inform you that your paper entitled
'$title' was ${ accepted ? 'accepted' : 'rejected' }.
The conference committee.
""";
Template template = engine.createTemplate(templateText);
// Create binding data
Map<String, Object> binding = new HashMap<>();
binding.put("firstname", "Grace");
binding.put("lastname", "Hopper");
binding.put("accepted", true);
binding.put("title", "Groovy for COBOL programmers");
// Generate output
String result = template.make(binding).toString();Groovy Templates follows a template engine pattern where:
The library provides multiple template engine implementations optimized for different use cases, from simple text templating to complex XML/HTML generation with type safety.
Core template engines supporting JSP-style and GString syntax for simple to moderate templating needs.
class SimpleTemplateEngine extends TemplateEngine {
SimpleTemplateEngine();
SimpleTemplateEngine(boolean verbose);
SimpleTemplateEngine(ClassLoader parentLoader);
SimpleTemplateEngine(GroovyShell groovyShell);
Template createTemplate(Reader reader) throws CompilationFailedException, ClassNotFoundException, IOException;
void setVerbose(boolean verbose);
boolean isVerbose();
void setEscapeBackslash(boolean escapeBackslash);
boolean isEscapeBackslash();
}class GStringTemplateEngine extends TemplateEngine {
GStringTemplateEngine();
GStringTemplateEngine(ClassLoader parentLoader);
Template createTemplate(Reader reader) throws CompilationFailedException, ClassNotFoundException, IOException;
}Specialized template engine for XML document generation with support for GSP tags and automatic XML formatting.
class XmlTemplateEngine extends TemplateEngine {
XmlTemplateEngine() throws SAXException, ParserConfigurationException;
XmlTemplateEngine(String indentation, boolean validating) throws SAXException, ParserConfigurationException;
XmlTemplateEngine(XmlParser xmlParser, ClassLoader parentLoader);
XmlTemplateEngine(XmlParser xmlParser, GroovyShell groovyShell);
Template createTemplate(Reader reader) throws CompilationFailedException, ClassNotFoundException, IOException;
void setIndentation(String indentation);
String getIndentation();
void setConfigurePrinter(Closure configurePrinter);
}High-performance template engine optimized for large templates (>64k) with better error reporting and memory efficiency.
class StreamingTemplateEngine extends TemplateEngine {
StreamingTemplateEngine();
StreamingTemplateEngine(ClassLoader parentLoader);
Template createTemplate(Reader reader) throws CompilationFailedException, ClassNotFoundException, IOException;
}Advanced type-safe template engine for XML/HTML generation with compile-time checking, template inheritance, and layout support.
class MarkupTemplateEngine extends TemplateEngine {
MarkupTemplateEngine();
MarkupTemplateEngine(TemplateConfiguration config);
MarkupTemplateEngine(ClassLoader parentLoader, TemplateConfiguration config);
MarkupTemplateEngine(ClassLoader parentLoader, TemplateConfiguration config, TemplateResolver resolver);
Template createTemplate(Reader reader) throws CompilationFailedException, ClassNotFoundException, IOException;
}class TemplateConfiguration {
TemplateConfiguration();
TemplateConfiguration(TemplateConfiguration that);
// XML/HTML output configuration
void setDeclarationEncoding(String declarationEncoding);
String getDeclarationEncoding();
void setExpandEmptyElements(boolean expandEmptyElements);
boolean isExpandEmptyElements();
void setUseDoubleQuotes(boolean useDoubleQuotes);
boolean isUseDoubleQuotes();
void setNewLineString(String newLineString);
String getNewLineString();
// Content processing configuration
void setAutoEscape(boolean autoEscape);
boolean isAutoEscape();
void setAutoIndent(boolean autoIndent);
boolean isAutoIndent();
void setAutoIndentString(String autoIndentString);
String getAutoIndentString();
void setAutoNewLine(boolean autoNewLine);
boolean isAutoNewLine();
// Template system configuration
void setBaseTemplateClass(Class<? extends BaseTemplate> baseTemplateClass);
Class<? extends BaseTemplate> getBaseTemplateClass();
void setLocale(Locale locale);
Locale getLocale();
void setCacheTemplates(boolean cacheTemplates);
boolean isCacheTemplates();
}Abstract base class for all template engines providing common template creation methods.
abstract class TemplateEngine {
abstract Template createTemplate(Reader reader) throws CompilationFailedException, ClassNotFoundException, IOException;
Template createTemplate(String templateText) throws CompilationFailedException, ClassNotFoundException, IOException;
Template createTemplate(File file) throws CompilationFailedException, ClassNotFoundException, IOException;
Template createTemplate(File file, Charset cs) throws CompilationFailedException, ClassNotFoundException, IOException;
Template createTemplate(URL url) throws CompilationFailedException, ClassNotFoundException, IOException;
Template createTemplate(URL url, Charset cs) throws CompilationFailedException, ClassNotFoundException, IOException;
}Interface representing a compiled template that can be bound with data and executed.
interface Template {
Writable make();
Writable make(Map binding);
}Interface for template resolvers used by MarkupTemplateEngine to locate template resources.
interface TemplateResolver {
void configure(ClassLoader templateClassLoader, TemplateConfiguration configuration);
URL resolveTemplate(String templatePath) throws IOException;
}class TemplateExecutionException extends Exception {
TemplateExecutionException(int lineNumber);
TemplateExecutionException(int lineNumber, String message);
TemplateExecutionException(int lineNumber, String message, Throwable cause);
TemplateExecutionException(int lineNumber, Throwable cause);
int getLineNumber();
}class TemplateParseException extends RuntimeException {
TemplateParseException(int lineNumber, int column);
TemplateParseException(String message, int lineNumber, int column);
TemplateParseException(String message, Throwable cause, int lineNumber, int column);
TemplateParseException(Throwable t, int lineNumber, int column);
int getLineNumber();
int getColumn();
}// From Groovy Lang
interface Writable {
Writer writeTo(Writer writer) throws IOException;
}
// Standard Java types used throughout
interface Map<K,V> { }
interface Reader { }
interface Writer { }
class File { }
class URL { }
class Charset { }
class Locale { }
class ClassLoader { }