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

10

最近,我编写了一些工具,以帮助我为那些本来会很冗长和乏味的任务生成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
{
    private String prop1;
    private String prop2;
    private String prop3;
}
为了实现这一目标,我必须从我的模板中删除缩进,就像这样:

To accomplish this, I have to remove indentation from my template like this:


public class MyTestClass
{
    <#list properties as p>
    private String ${p.name};
    </#list>
}

对于这个简单的情况,从我的模板中删除缩进并不是真正的问题,但你可以想象复杂的模板变得相当难以阅读。

一方面,我真的希望我的代码格式良好,但另一方面,我也希望我的模板格式良好。我使用的IDE是Eclipse,并且内置格式化程序已完全按照我的(和我的团队的)愿望进行自定义。如果我可以从freemarker模板生成代码并将其输出与Eclipse的格式化程序一起进行后处理,那将是极好的。

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

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


也许可以使用类似于JIndent的工具。 - millimoose
看起来很有前途,它列出了一个开放的API作为其特点。然而,就个人而言,我觉得它的许可证对我的目的来说有点太贵了。 - Rens Verhage
随你便,但我不认为一个工具花费约100美元,在一份每月至少赚上十倍的工作中使用几年时间是“太贵了”。 - millimoose
1个回答

4
如果您想要在自己的Java代码中使用Eclipse格式化程序,我建议您查看 maven java formatter plugin
这是一个Maven插件,可以根据Eclipse代码格式设置文件格式化源代码。
如果您不想使用Maven,但想将格式化代码嵌入到自己的代码中,请查看FormatterMojo。它包含启动Eclipse Code Formatter(使用Eclipse库)的代码。
一切都是免费和开源的。

我一定会去看看。看起来相当简单 :) - Rens Verhage
遗憾的是,格式与Eclipse不完全相同。尽管Eclipse和formatter-maven-plugin使用相同的配置,但我有时会遇到缩进不同的情况。 - MrSmith42

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接