框架的Java代码生成

时间:2014-01-23 18:28:30

标签: java code-generation eclipse-jet

我正在研究一个基于Java的家庭自动化系统框架。该家庭自动化系统的要求之一是开发人员应该能够轻松扩展功能。我认为简化事情的一个好方法是允许开发人员创建一个描述其外围设备功能的简单XML文件;即它可以处理的命令以及它可以广播的事件。 (类似于Wig Wag等系统中的WHEN和THEN事件:http://www.kickstarter.com/projects/wigwag/wigwag-scan-it-control-it-rule-it-share-it

我想解析开发人员提供的XML文件,并自动生成Java代码以与系统的其余部分进行交互,有点像Google在Android SDK中使用他们的R.java文件。 (我意识到这是由APT而不是Eclipse处理的) 我看过的一些解决方案:

  • Eclipse Java Emitter Templates(JET) - 使用JET非常复杂,文档非常差/不存在。我得到它用generate()方法生成Java实现文件,但我无法找到如何让IDE生成我在模板中定义的Java代码。 我试过这个教程:https://weblogs.java.net/blog/survivant/archive/2009/01/template_code_g.html但是我无法让Car的例子工作;我收到此错误:
  
    
      
        

构建期间发生错误。

                 

错误在项目'JETTest'上运行构建器'JET Builder'。

                 

第1行第1列'main.jet'中的错误指令

                 

第1行第1列'main.jet'中的错误指令

                 

第1行第1列'main.jet'中的错误指令

                 

第1行第1列'main.jet'中的错误指令

      
    
  
  • JAXB - 这似乎更多用于编组/解组Java对象,并没有解决我的问题
  • ANT编译器 - 我得到了这个来生成一个类,但它并不是我想要的灵活性(例如,我希望能够从开发人员定义的XML中获取包名,但输出目录是静态分配的ANT build.xml文件。)
  • Apache Velocity - 瞥了一眼但是我对JET已经感到沮丧,而且在粗略检查时似乎并不是一个很好的解决方案。 (我很高兴被证明是错误的:))

到目前为止,ANT解决方案对我来说是最好的,因为它确实有效,但我喜欢JET,因为它似乎运行得最顺畅。

现在我的问题。我应该选择ANT,还是JET更好?此外,如果JET更好,有人可以指出一个不完全过时的简单教程吗?

1 个答案:

答案 0 :(得分:0)

我这样看 - 使用更简单易用的框架或工具。更重要的是有良好的文档。所以ANT看起来是你最好的选择。

但是,我可以建议另一种选择 - Groovy模板。 http://groovy.codehaus.org/Groovy+Templates

同样的工作,但使用起来非常简单并且文档很好。我们在公司中使用它来转换一些非常古老的系统的订单。