Java 从自己的程序中使用Eclipse代码格式化程序

Java 从自己的程序中使用Eclipse代码格式化程序,java,eclipse,freemarker,code-formatting,Java,Eclipse,Freemarker,Code Formatting,最近,我编写了一些工具,帮助我生成Java代码,否则将是冗长乏味的任务。我使用freemarker编写模板。但是,模板中的所有空白都保留在输出中,导致代码非常混乱。我可以从我的模板中删除缩进来修复这个问题,但这会使我的模板无法维护 考虑以下简单的示例模板: public class MyTestClass { <#list properties as p> private String ${p.name}; </#list> } 缩进有点

最近,我编写了一些工具,帮助我生成Java代码,否则将是冗长乏味的任务。我使用freemarker编写模板。但是,模板中的所有空白都保留在输出中,导致代码非常混乱。我可以从我的模板中删除缩进来修复这个问题,但这会使我的模板无法维护

考虑以下简单的示例模板:

public class MyTestClass
{
    <#list properties as p>
        private String ${p.name};
    </#list>
}
缩进有点太多,应该是:

public class MyTestClass
{
    private String prop1;
    private String prop2;
    private String prop3;
}
为此,我必须从模板中删除缩进,如下所示:

public class MyTestClass
{
    <#list properties as p>
    private String ${p.name};
    </#list>
}
公共类MyTestClass
{
私有字符串${p.name};
}
对于这个简单的例子,从我的模板中删除缩进并不是一个真正的问题,但是您可以想象复杂的模板变得非常不可读

一方面,我真的希望我的代码被很好地格式化,但另一方面,我希望我的模板也被很好地格式化。我使用Eclipse作为IDE,它是完全按照我(和我的团队)的意愿定制的内置格式化程序。如果我能以某种方式从freemarker模板生成代码,并作为后处理步骤,使用Eclipse的格式化程序格式化其输出,那就太好了

当然,我可以在生成代码后手动运行格式化程序,但我真的想自动化这个过程


那么,长话短说,有人知道我如何在自己的Java代码中使用Eclipse的代码格式化程序吗?

如果您想从自己的Java代码中使用Eclipse格式化程序,我建议您看看 这个

这是一个maven插件,可用于根据Eclipse代码格式化设置文件格式化源代码

如果您不想使用maven,但想将格式化代码嵌入到自己的代码中,请查看。它包含启动Eclipse代码格式化程序的代码(使用Eclipse库)


所有这些都是免费的、开源的。

也许可以使用一些看起来很有前途的东西,它列出了一个开放API作为它的特性。然而,就我个人而言,我觉得它的许可证对我来说有点太贵了。随你的便,但我不同意,对于一个你将在工作中使用几年的工具,每月至少多付一个数量级的工资,100美元是“太贵了”。我肯定会去看看。看起来很简单:)遗憾的是,格式与eclipse不完全相同。尽管eclipse和formatter maven插件都使用相同的配置,但我也有缩进不同的情况。
public class MyTestClass
{
    <#list properties as p>
    private String ${p.name};
    </#list>
}