Cambié de FreeMarker a mi propia utilidad de generación de código fuente de Java. Se puede acceder a las fuentes desde aquí: https://source.mysema.com/svn/mysema/projects/codegen/trunk/
Está diseñado de tal manera que solo llame a la API y la salida esté formateada correctamente. Aquí está un ejemplo:
JavaWriter writer = new JavaWriter(new StringWriter());
writer.beginClass("FieldTests");
writer.privateField("String", "privateField");
writer.privateStaticFinal("String", "privateStaticFinal", "\"val\"");
writer.protectedField("String","protectedField");
writer.field("String","field");
writer.publicField("String","publicField");
writer.publicStaticFinal("String", "publicStaticFinal", "\"val\"");
writer.publicFinal("String", "publicFinalField");
writer.publicFinal("String", "publicFinalField2", "\"val\"");
writer.end();
que se convierte en
public class FieldTests {
private String privateField;
private static final String privateStaticFinal = "val";
protected String protectedField;
String field;
public String publicField;
public static final String publicStaticFinal = "val";
public final String publicFinalField;
public final String publicFinalField2 = "val";
}
he desarrollado la utilidad codegen para Querydsl que refleja los tipos de dominio Java en los tipos de consulta. Entonces las necesidades de serialización son muy complejas. El uso de plantillas FreeMarker simple no se escalo. Hubo demasiada personalización en la salida, que es mejor controlar en Java que una sintaxis de lenguaje de plantilla.
Esto no es un anuncio del módulo Codegen. Solo quería señalar que para una serialización altamente personalizable, FreeMarker podría no escalar.
http://stackoverflow.com/questions/996646/stand-alone-java-code-formatter-beautifier-pretty-printer –