2013-02-09 49 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

相關問題