Java的代码/模板生成器

时间:2008-10-16 19:47:14

标签: java templates code-generation

对于C#,我经常使用CodeSmith,最近使用T4 generator,这是Visual Studio的一部分。

我正在寻找类似于Java的东西,尤其是Eclipse插件,因为我使用Eclipse IDE进行了所有Java开发。

11 个答案:

答案 0 :(得分:6)

我发现freemarker可以很好地生成任何类型的代码。来自网站:

  

FreeMarker是一个“模板引擎”;一种通用工具,用于根据模板生成文本输出(从HTML到自动生成的源代码)。它是一个Java包,是Java程序员的类库。它本身并不是最终用户的应用程序,而是程序员可以嵌入到他们的产品中的东西。

struts2经常使用它。该网站有很多其他使用freemarker的产品。

答案 1 :(得分:6)

我曾与VelocityStringTemplate合作过。 Velocity有点传统(想想JSP / ASP概念),而StringTemplate似乎更清晰。在this Artima interview中描述的意义上。两者都是纯粹的模板引擎,并且如果你想从模型中生成完整的代码,则需要你在它们周围编写一些代码。

StringTemplate由ANTLR在内部使用,这可能对您的工作有用。

作为替代方法,您可以使用EclipseEMFJET一起使用。

答案 2 :(得分:2)

您应该尝试使用Telosys Tools,这是一个用于代码生成的Eclipse插件,可以使用可定制的Velocity模板从现有数据库中进行工作

请参阅:http://www.telosys.org/

Eclipse Marketplace:http://marketplace.eclipse.org/content/telosys-tools

教程如下:https://sites.google.com/site/telosystutorial/

请参阅有关CodeSmith的另一个问题:Is there any freeware tool available which is like Codesmith?

答案 3 :(得分:1)

这是一个古老的问题,但唯一接近(对于Java)来做CodeSmith Generator的工作是Spring Roo

原因是Java没有像C#那样的部分类。 Spring Roo使用AspectJ ITDs来解决这个问题。

答案 4 :(得分:1)

我的回答是使用StringTemplate,但除了使用什么工具之外还有更多的东西。

生成java代码是个问题吗?还是使用java工具?程序员编写代码通常会很舒服。因此,编写一些java类并编写一个使用StringTemplate生成代码的walk也不是一个飞跃。我个人认为创建示例模型,从模型生成Java代码是一个很好的练习。根据您的使用情况,您可能最终手动编写JSON模型,而不必编写任何Java代码来生成Java代码。或者你最终可能会编写生成等效模型的Java类。

您可以使用基于StringTemplate的STST,它读取JSON。 STST是基于命令行的,我相信你可以把它挂钩到eclipse和/或Visual Studio。

我个人认为可移植性,JSON是一种非常简单的语言。几乎每种语言都有支持它的库。

答案 5 :(得分:1)

我使用JavaForger从模板生成代码。它解析现有的类,以便您可以在模板中使用class-data。它既可以创建新类,也可以将代码插入现有类中。您可以根据字符串转换规则(例如myProject / dao / ProductDao.java => myProject / service / ProductService.java)来确定将生成的代码插入何处。

JavaForger是开源的,并使用FreeMarker作为模板引擎和JavaParser作为解析器。

答案 6 :(得分:0)

我不是C#男,所以我不知道等价物会是什么,但我发现xdoclet过去非常好。我不认为它与eclipse集成,但你可以从一个蚂蚁脚本运行它。是否喜欢从带注释的Java类生成Hibernate映射文件。如果您正在寻找的话,这很有用:)

答案 7 :(得分:0)

eclipse有一个内置的模板系统。

查看窗口 - >偏好 - > java - >代码风格 - >代码模板

答案 8 :(得分:0)

您可以查看我的插件:http://fast-code.sourceforge.net/。它允许用户选择多个字段并使用用户指定的速度模板生成代码。

答案 9 :(得分:0)

查看我的项目https://github.com/karajdaar/templator,看看是否有帮助。

答案 10 :(得分:0)

我写了一个简单的基于Web的应用程序供我使用。 它在https://github.com/harish2704/templates处可用  并在http://templates-harish2704.rhcloud.com/提供演示 它的语言独立工具。 GUI支持多种语言(突出显示,代码段完成等)