2013-02-09 50 views
10

最近我编写了一些工具,可以帮助我生成Java代码,否则这些工作将是漫长而乏味的任务。我使用freemarker编写模板。但是,模板中的所有空白都保留在输出中,导致代码非常混乱。我可以从我的模板中删除缩进来解决这个问题,但这使我的模板变得难以维护。从自己的程序中使用Eclipse代码格式化程序

考虑这个简单的例子模板:

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; 
} 

要做到这一点,我必须从我的模板中删除缩进,如下所示:

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

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

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

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

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

+0

也许使用类似于[JIndent](http://www.jindent.com/) – millimoose 2013-02-09 12:48:09

+0

看起来很有希望,它列出了一个开放的API作为其功能。但是,我个人认为它的许可证对我的目的来说太贵了。 – verhage 2013-02-09 13:06:41

+0

适合自己,但我并不同意,在一项每月支付至少一个数量级的工作中使用几年的工具约为100美元“太贵”。 – millimoose 2013-02-09 13:09:15

回答

4

如果你想从你自己的java代码中使用Eclipse格式化程序,我建议你看看 的maven java formatter plugin

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

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

它全部是免费且开源的。

+0

我一定要检查一下。看起来很简单:) – verhage 2013-02-09 15:00:53

+0

如果你喜欢这个答案,不要忘记接受它:) – ddewaele 2013-03-12 07:25:57

+0

可悲的是格式化并不完全相同,日食会这样做。尽管事实上eclipse和formatter-maven插件都使用相同的配置,但我仍然认为凹痕不同。 – MrSmith42 2016-06-17 15:10:34

相关问题