我正在为家庭自动化系统开发基于 java 的框架。这个家庭自动化系统的要求之一是开发人员应该能够轻松地扩展功能。我认为简化事情的一个好方法是允许开发人员创建一个简单的 XML 文件来描述其外围设备的特性;即它可以处理的命令和它可以广播的事件。(类似于 Wig Wag 等系统中的 WHEN 和 THEN 事件:http ://www.kickstarter.com/projects/wigwag/wigwag-scan-it-control-it-rule-it-share-it )
我想解析开发人员提供的 XML 文件并自动生成 Java 代码以与系统的其余部分交互,有点像谷歌在 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 Compiler - 我用它来生成一个类,但它不是我想要的那么灵活(例如,我希望能够从开发人员定义的 XML 中获取包名称,但输出目录是在 ANT
build.xml
文件中静态分配的.) - Apache Velocity - 看了一眼,但我已经对 JET 感到沮丧,粗略检查后它似乎不是一个很好的解决方案。(我很高兴被证明是错误的:))
到目前为止,ANT 解决方案对我来说是最好的,因为它确实有效,但我喜欢 JET,因为它似乎工作最顺畅。
现在我的问题。我应该选择 ANT,还是 JET 更好?此外,如果 JET 更好,有人可以指出一个简单的教程,它不是完全过时的吗?