一种基于maven插件和freemarker模版的代码生成方法及装置制造方法

文档序号:6511993阅读:149来源:国知局
一种基于maven插件和freemarker模版的代码生成方法及装置制造方法
【专利摘要】一种基于maven插件和freemarker模版的代码生成方法及装置,包括:准备数据和模版:根据数据库设计文档或数据库表编写或生成.hbm.xml文件,依据项目特点和freemarker模版语法编写模版;调用maven插件进行逻辑运算生成代码的步骤:调用封装了代码生成的运算逻辑的maven插件,根据第一步骤所准备的.hbm.xml文件和freemarker模版文件进行逻辑运算和代码生成;代码生成:将宏套用在代码模板中生成MVC三层架构的目标代码。本发明解决了开发过程中重复性代码的自动生成问题,并且能根据模版进行实际情况下的定制,对于提高生产效率有良好的效果。将代码自动生成和常用构建工具maven绑定在一起,提高了装置的通用性和易用性。
【专利说明】—种基于maven插件和freemarker模版的代码生成方法及装置
【【技术领域】】
[0001]本发明涉及计算机软件【技术领域】,具体涉及一种基于maven插件和freemarker模版的代码生成方法及装置。
【【背景技术】】
[0002]计算机的专家们一直在探寻一种能使得重复代码越来越少的方法,函数封装、面向对象、A0P、MDA、0RM……所有这些相关或者无关的技术都在试图将重复的代码消灭,可是一路走过来,人们突然发现,重复的代码是不可能被完全消灭的,到了更高的层次一定会有更高级的重复的代码需要我们去对付,因此代码生成也逐渐不再被妖魔化。网页编辑器、编译器、IDE等这些非常重要的工具不就是代码生成器吗?只要是系统经过好的设计,对于剩下的一些重复性的代码与其使用学院派且严重影响性能的方法进行消除,不如使用代码生成器来完成来得更实在一些。
[0003]在开发程序的过程中,特别是开发一些业务系统的过程中,一些重复的代码总是不可避免的,比如ORM中POJO代码和配置文件、资料录入界面的代码、数据库DDL语句等,这些工作如果要开发人员去手动完成话,不仅会降低开发效率,而且会带来很多bug,最重要的是极容易使得开发人员产生厌倦心理从而消极怠工甚至离职,从而提高了项目的人力资源成本、增大了项目的风险。因此在大一些的开发团队中都在使用着各种或公开或自酿的代码生成工具,而且越来越多的人开始选择自酿工具,这是因为使用第三方的代码生成工具往往不能满足自己的个性化需求。
[0004]目前代码生成工具主要是用数据库模型来生成,代码生成技术较多应用在集成开发环境(IDE)和专业的代码生成工具中(如middlegen),但大多数代码生成器生成的代码模板和种类都由工具预定义,较难改变生`成代码的结构、风格和生成其他种类的代码,由于灵活性欠佳,不能完全满足软件开发的实际需要,难以在软件开发项目中得到重复的应用。
[0005]中国发明专利200310112515.2公开了一种加工代码生成系统及方法。利用本发明,可提高生产效率及减少人为错误操作。但,本系统的局限比较大,只能对工件图的图元确定零件的最优加工路径,不是严格意义上的通用代码生成装置。
[0006]中国发明专利201210062323.4公开了一种网页源代码生成方法及装置,该文献提供的网页源代码生成方法及装置,能够大幅度提升代码开发效率,便于推广应用。但,本装置生成的结果产物只包含了网页源代码,无法生成其他部分的源代码,具有局限性。
[0007]中国发明专利201310075933.2公开了一种回调函数代码生成方法及装置,但,此装置只是一种回调函数代码的生成方法,回调函数只是编程语言众多函数中的一种,此装置的应用局限比较大。
[0008]中国发明专利201210036683.7公开一种基于API接口和脚本定义相结合的可视化代码生成方法,该方法利用API接口提供编程平台的常规功能,在脚本中可以定义符号的代码,摆脱对系统软件接口的依赖,并为应用人员提供良好的扩展性,可以书写脚本,在不修改图形程序和编程平台的情况下,切换应用场景,输出对应的目标代码。但,在该装置中主要是通过脚本的执行来调用API接口库和生成代码等一系列工作,对于脚本编写要求较高,且运行环境有限制,不是一种较通用的解决方法。
[0009]有鉴于此,本发明人针对现有技术的缺陷深入研究,遂有本案产生。

【发明内容】

[0010]本发明所要解决的技术问题在于提供一种通用的基于maven插件和freemarker模版的代码生成方法及装置。
[0011]本发明是这样实现的:
[0012]一种基于maven插件和freemarker模版的代码生成方法,包括下述步骤:
[0013]第一步骤:准备数据和模版的步骤:
[0014]根据数据库设计文档或数据库表编写或生成.hbm.xml文件,依据项目特点和freemarker模版语法编写模版;
[0015]具体包括:设计数据库对象结构,按照hibernate的规范编写.hbm.xml映射文件;若已在数据库中建表,则可用逆向工具逆向出表对应的.hbm.xml文件;为整个项目设计逻辑、应用架构,按照所述工程设计逻辑架构要求,编写代码模板,将类代码中可变的部分通过变量和freemarker的语法逻辑进行编写,不变的部分直接写在模板中;
[0016]第二步骤:调用maven插件进行逻辑运算生成代码的步骤:`[0017]调用封装了代码生成的运算逻辑的maven插件,根据第一步骤所准备的.hbm.xml文件和freemarker模版文件进行逻辑运算和代码生成;
[0018]具体包括:根据所准备的.hbm.xml文件和freemarker模版文件生成java类、jsp文件以及包层级结构,根据.hbm.xml文件中的name属性生成符合匈牙利命名法的java类名、根据.hbm.xml文件中的property节点的name属性名生成类中各成员变量名、根据.hbm.xml文件中的property节点的type属性名生成成员变量类型、根据.hbm.xml文件中的comment节点的值生成类注释、根据.hbm.xml文件中的property节点的子节点comment值生成成员变量注释、根据系统时间生成文档注释、根据操作系统登录名完成目标代码签名;
[0019]第三步骤:代码生成的步骤:
[0020]将宏套用在代码模板中生成MVC三层架构的目标代码;
[0021]具体包括:根据maven插件配置或默认路径的目标代码保存的路径,将目标代码输出到指定的路径中,生成的代码包括spring配置文件、mvc模式中三层对应的java类及java包、jsp增删及列表文件,在插件输出目录中将生成的代码拷贝到实际运行环境中进行调试,做定制业务逻辑部分的开发,即可完成多个模块的开发过程。
[0022]一种基于maven插件和freemarker模版的代码生成装置,包括:
[0023]准备数据和模版单元:用于根据数据库设计文档或数据库表编写或生成.hbm.xml文件,依据项目特点和freemarker模版语法编写模版;
[0024]具体包括:设计数据库对象结构,按照hibernate的规范编写.hbm.xml映射文件;若已在数据库中建表,则可用逆向工具逆向出表对应的.hbm.xml文件;为整个项目设计逻辑、应用架构,按照所述工程设计逻辑架构要求,编写代码模板,将类代码中可变的部分通过变量和freemarker的语法逻辑进行编写,不变的部分直接写在模板中;
[0025]调用maven插件进行逻辑运算生成代码单元:用于调用封装了代码生成的运算逻辑的maven插件,根据所准备的.hbm.xml文件和freemarker模版文件进行逻辑运算和代码生成;
[0026]具体包括:根据所准备的.hbm.xml文件和freemarker模版文件生成java类、jsp文件以及包层级结构,根据.hbm.xml文件中的name属性生成符合匈牙利命名法的java类名、根据.hbm.xml文件中的property节点的name属性名生成类中各成员变量名、根据.hbm.xml文件中的property节点的type属性名生成成员变量类型、根据.hbm.xml文件中的comment节点的值生成类注释、根据.hbm.xml文件中的property节点的子节点comment值生成成员变量注释、根据系统时间生成文档注释、根据操作系统登录名完成目标代码签名;
[0027]代码生成单元:用于将宏套用在代码模板中生成MVC三层架构的目标代码;
[0028]具体包括:根据maven插件配置或默认路径的目标代码保存的路径,将目标代码输出到指定的路径中,生成的代码包括spring配置文件、mvc模式中三层对应的java类及java包、jsp增删及列表文件,在插件输出目录中将生成的代码拷贝到实际运行环境中进行调试,做定制业务逻辑部分的开发,即可完成多个模块的开发过程。
[0029]本发明的优点在于:本发明是采用数据库模型(hibernate格式的hbm.xml文件)进行解析,根据freemarker模版进行代码的生成,理论上只要能写出代码的模版,就能生成此类代码。代码模版的编写不依赖任何IDE平台和工具,用普通的文本编辑器就可以进行模版修改和编写。采用maven的插件构建技术,可以将代码生成绑定到项目的各个生命周期上自动执行,也可以手工调用maven插件命令执行,多种灵活的配置和调用方式满足不同的开发环境和需求。解决了开发过程中重复性代码的自动生成问题,并且能根据模版进行实际情况下的定制,对于提高生产效`率有良好的效果。将代码自动生成和常用构建工具maven绑定在一起,提闻了装置的通用性和易用性。
【【专利附图】

【附图说明】】
[0030]下面参照附图结合实施例对本发明作进一步的描述。
[0031]图1是本发明应用场景不意图。
[0032]图2是本发明主要步骤流程示意图。
【【具体实施方式】】
[0033]本发明的应用场景如图1所示,一种基于maven插件和freemarker模版的代码生成方法及装置,针对要生成代码的相关参数规则进行输入(生成的代码的基本包名、模块名、hbm.xml文件名),编辑代码模版,使生成的代码满足开发的要求(如某个类型的类采用相同的父类)。准备完这些参数和模版后,调用maven的插件命令执行参数、模版解析过程,并生成代码到指定的目录中,然后在指定的目录中获得这些代码,移动到实际的代码环境中,并对代码进行运行时检验和定制修改。
[0034]本发明的主要步骤如图2所示,包括如下步骤:
[0035]1、数据准备阶段:主要准备hibernate格式的.hbm.xml文件,freemarker模版文件:
[0036].hbm.xml文件是自动生成代码的业务元数据来源,所以首先要准备好相关的.hbm.xml文件。按照数据库设计和hibernate的规范编写每个表的.hbm.xml文件,如果已在数据库中建表,则可以用相关逆向工具从数据库表逆向出对应的.hbm.xml文件。
[0037]freemarker的模版文件是自动生成代码的业务规则载体,模版文件按照项目开发中使用的类的特性进行归纳编写,按照项目开发中的包的结构进行模版目录的层级组织,具体的每个模版文件按照Freemarker的语法规则和项目中的类结构进行编写。将类中相同和固定的部分直接书写,类中按规律可变的部分用变量和freemarker模版语句进行编程。
[0038]本步骤具体包括:设计数据库对象结构,按照hibernate的规范编写.hbm.xml映射文件;若已在数据库中建表,则可用逆向工具逆向出表对应的.hbm.xml文件;为整个项目设计逻辑、应用架构,按照所述工程设计逻辑架构要求,编写代码模板,将类代码中可变的部分通过变量和freemarker的语法逻辑进行编写,不变的部分直接写在模板中;
[0039]2、调用maven插件进行逻辑运算生成代码:
[0040]在maven项目中配置插件:
[0041]
【权利要求】
1.一种基于maven插件和freemarker模版的代码生成方法,其特征在于:包括下述步骤: 第一步骤:准备数据和模版的步骤: 根据数据库设计文档或数据库表编写或生成.hbm.xml文件,依据项目特点和freemarker模版语法编写模版; 具体包括:设计数据库对象结构,按照hibernate的规范编写.hbm.xml映射文件;若已在数据库中建表,则可用逆向工具逆向出表对应的.hbm.xml文件;根据整个项目的设计逻辑、应用架构,按照工程设计逻辑架构要求,编写代码模板,将类代码中可变的部分通过变量和freemarker的语法逻辑进行编写,不变的部分直接写在模板中; 第二步骤:调用maven插件进行逻辑运算生成代码的步骤: 调用封装了代码生成的运算逻辑的maven插件,根据第一步骤所准备的.hbm.xml文件和freemarker模版文件进行逻辑运算和代码生成; 具体包括:根据所准备的.hbm.xml文件和freemarker模版文件生成java类、jsp文件以及包层级结构,根据.hbm.xml文件中的name属性生成符合匈牙利命名法的java类名、根据.hbm.xml文件中的property节点的name属性名生成类中各成员变量名、根据.hbm.xml文件中的property节点的type属性名生成成员变量类型、根据.hbm.xml文件中的comment节点的值生成类注释、根据.hbm.xml文件中的property节点的子节点comment值生成成员变量注释、根据系统时间生成文档注释、根据操作系统登录名完成目标代码签名; 第三步骤:代码生成的步骤: 将宏套用在代码模板中生成MVC三层架构的目标代码; 具体包括:根据maven插件配置或默认路径的目标代码保存的路径,将目标代码输出到指定的路径中,生成的代码包括spring配置文件、mvc模式中三层对应的java类及java包、jsp增删及列表文件,在插件输出目录中将生成的代码拷贝到实际运行环境中进行调试,做定制业务逻辑部分的开发,即可完成多个模块的开发过程。
2.一种基于maven插件和freemarker模版的代码生成装置,其特征在于:包括: 准备数据和模版单元:用于根据数据库设计文档或数据库表编写或生成.hbm.xml文件,依据项目特点和freemarker模版语法编写模版; 具体包括:设计数据库对象结构,按照hibernate的规范编写.hbm.xml映射文件;若已在数据库中建表,则可用逆向工具逆向出表对应的.hbm.xml文件;为整个项目设计逻辑、应用架构,按照所述工程设计逻辑架构要求,编写代码模板,将类代码中可变的部分通过变量和freemarker的语法逻辑进行编写,不变的部分直接写在模板中; 调用maven插件进行逻辑运算生成代码单元:用于调用封装了代码生成的运算逻辑的maven插件,根据所准备的.hbm.xml文件和freemarker模版文件进行逻辑运算和代码生成; 具体包括:根据所准备的.hbm.xml文件和freemarker模版文件生成java类、jsp文件以及包层级结构,根据.hbm.xml文件中的name属性生成符合匈牙利命名法的java类名、根据.hbm.xml文件中的property节点的name属性名生成类中各成员变量名、根据.hbm.xml文件中的property节点的type属性名生成成员变量类型、根据.hbm.xml文件中的comment节点的值生成类注释、根据.hbm.xml文件中的property节点的子节点comment值生成成员变量注释、根据系统时间生成文档注释、根据操作系统登录名完成目标代码签名; 代码生成单元:用于将宏套用在代码模板中生成MVC三层架构的目标代码; 具体包括:根据maven插件配置或默认路径的目标代码保存的路径,将目标代码输出到指定的路径中,生成的代码包括spring配置文件、mvc模式中三层对应的java类及java包、jsp增删及列表文件,在插件输出目录中将生成的代码拷贝到实际运行环境中进行调试,做定制业务逻辑部分的开发,`即可完成多个模块的开发过程。
【文档编号】G06F9/44GK103500087SQ201310424542
【公开日】2014年1月8日 申请日期:2013年9月17日 优先权日:2013年9月17日
【发明者】倪时龙, 苏江文, 张垚 申请人:福建亿榕信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1