CN113805877A - 基于idea插件的项目工程的构建方法及装置 - Google Patents
基于idea插件的项目工程的构建方法及装置 Download PDFInfo
- Publication number
- CN113805877A CN113805877A CN202111132339.3A CN202111132339A CN113805877A CN 113805877 A CN113805877 A CN 113805877A CN 202111132339 A CN202111132339 A CN 202111132339A CN 113805877 A CN113805877 A CN 113805877A
- Authority
- CN
- China
- Prior art keywords
- template
- project
- module
- file
- generating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000010276 construction Methods 0.000 title claims abstract description 19
- 238000000034 method Methods 0.000 claims abstract description 43
- 238000013499 data model Methods 0.000 claims abstract description 38
- 238000012360 testing method Methods 0.000 claims description 42
- 238000004590 computer program Methods 0.000 claims description 22
- 238000013507 mapping Methods 0.000 claims description 12
- 230000018109 developmental process Effects 0.000 description 23
- 238000011161 development Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 230000015654 memory Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 230000000007 visual effect Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000008140 language development Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开提供了一种基于IDEA插件的项目工程的构建方法,可以应用于金融领域。该方法包括:接收用户的项目配置信息;根据所述项目配置信息生成数据模型;以及根据所述数据模型和项目模板生成项目文件目录和目标文件,其中,所述项目模板包括主框架模板和业务代码模板,所述目标文件包括与所述项目文件目录对应的配置文件和业务代码文件。本公开还提供了一种项目工程的构建装置、设备、存储介质和程序产品。
Description
技术领域
本公开涉及计算机技术领域,具体软件开发领域,更具体地涉及一种基于IDEA插件的项目工程的构建方法、装置、设备、介质和程序产品。
背景技术
随着互联网技术的发展,软件开发经历着从传统开发到低代码软件开发、零代码软件开发的演变。
一个示例中,低代码和零代码平台基本都是以云平台方式提供开发服务,这些平台提供的功能主要包括数据库表可视化设计、基于数据库表结构自动生成代码,生成数据库表对应的Controller、Service、DAO、MyBatis XML映射等文件,没有生成项目框架相关的目录和配置文件,这些文件独立与具体的项目框架,无法直接运行,需要开发人员手动进行配置后才能运行,因此存在开发效率低的问题。
发明内容
鉴于上述问题,本公开提供了基于IDEA插件的项目工程的构建方法、装置、设备、介质和程序产品。
根据本公开的第一个方面,提供了一种基于IDEA插件的项目工程的构建方法,包括:接收用户的项目配置信息;
根据所述项目配置信息生成数据模型;以及
根据所述数据模型和项目模板生成项目文件目录和目标文件,
其中,所述项目模板包括主框架模板和业务代码模板,所述目标文件包括与所述项目文件目录对应的配置文件和业务代码文件。
根据本公开的实施例,所述项目配置信息包括项目名称、模块名称、模块类型、组件信息和数据库配置信息。
根据本公开的实施例,所述根据所述项目配置信息生成数据模型包括:
获取主框架模板和业务代码模板中的变量标签;
根据所述变量标签和所述项目配置信息按照模板语言规范构建数据模型。
根据本公开的实施例,所述项目文件目录包括项目主文件目录和模块文件目录,所述根据所述数据模型和项目模板生成项目文件目录和目标文件包括:
获取所述项目名称、所述模块名称和所述模块类型;
根据所述项目名称和所述主框架模板生成项目主文件目录和配置文件;
根据所述项目名称、所述模块名称、所述模块类型和所述主框架模板生成模块文件目录和配置文件;以及
根据所述项目配置信息、数据库配置信息和所述业务代码模板生成业务代码文件。
根据本公开的实施例,所述模块类型包括多级模块和单级模块,所述主框架模板包括单级模块模板和多级模块模板,所述根据所述项目名称、所述模块名称、所述模块类型和所述主框架模板生成模块文件目录和配置文件包括:
当模块类型为单级模块时,根据所述项目名称和所述单级模块模板生成单级模块文件目录和配置文件;
当模块类型为多级模块时,根据所述项目名称和所述多级模块模板生成多级模块文件目录和配置文件。
根据本公开的实施例,所述多级模块模板包括多级模块主目录模板、接口模块主目录模板、协议模块主目录模板和接口实现模块主目录模板。
根据本公开的实施例,所述主框架模板还包括主框架启动模块模板、主框架公共模块模板和主框架测试模块模板,所述根据所述项目名称和所述主框架模板生成项目主文件目录和配置文件包括:
根据所述项目名称和所述主框架启动模块模板生成项目启动模块文件目录和配置文件;
根据所述项目名称和所述主框架公共模块模板生成项目公共模块文件目录和配置文件;以及
根据所述项目名称和所述主框架测试模块模板生成项目测试模块文件目录和配置文件。
根据本公开的实施例,所述业务代码模板包括Controller类模板、服务接口类模板、服务实现类模板、MyBatis接口类模板、MyBatis映射文件模板、实体类模板和测试类入口模板,所述根据所述项目配置信息、数据库配置信息和所述业务代码模板生成业务代码文件包括:
根据所述数据库配置信息和所述Controller类模板生成Controller代码文件;
根据所述数据库配置信息和所述服务接口类模板生成Service代码文件;
根据所述数据库配置信息和所述MyBatis接口类模板生成DAO文件;
根据所述数据库配置信息和所述MyBatis映射文件模板生成MyBatis XML映射文件;以及
根据所述数据库配置信息和所述测试类入口模板生成单元测试文件。
本公开的第二方面提供了一种项目工程的构建装置,包括:接收模块,用于接收用户的项目配置信息;
第一生成模块,用于根据所述项目配置信息生成数据模型;以及
第二生成模块,用于根据所述数据模型和项目模板生成项目文件目录和目标文件,其中,所述项目模板包括主框架模板和业务代码模板,所述目标文件包括与所述项目文件目录对应的配置文件和业务代码文件。
本公开的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述基于IDEA插件的项目工程的构建方法。
本公开的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述基于IDEA插件的项目工程的构建方法。
本公开的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述基于IDEA插件的项目工程的构建方法。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的基于IDEA插件的项目工程的构建方法的应用场景图。;
图2示意性示出了根据本公开实施例的基于IDEA插件的项目工程的构建方法的流程图;
图3示意性示出了根据本公开实施例的另一种基于IDEA插件的项目工程的构建方法的流程图;
图4示意性示出了本公开实施例根据数据模型和项目模板生成项目文件目录和目标文件的流程图;
图5示意性示出了根据本公开实施例的项目工程的构建装置的结构框图;以及
图6示意性示出了根据本公开实施例的适于实现基于IDEA插件的项目工程的构建方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的***”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的***等)。
首先对本公开出现的术语及专业名词进行解释。
低代码:一种可以让开发者依托平台快速搭建企业信息化的***,在这过程中,使用者只需要少量的代码编写,其他的大部分工作都是通过可视化的拖拽、点选完成。
无代码:一种完全不需要任何代码编程的开发方式,主要围绕企业数据和业务管理需求,通过可视化方式设计数据结构,用户交互形式,设置访问权限和定义工作流程的平台。
Freemarker模板引擎:Apache FreeMarkerTM是一个Java库,用于根据模板和数据生成文本输出(HTML网页,电子邮件,配置文件,源代码等)。
Freemarker数据模型:Freemarker数据模型包含了模板中可用的变量的具体取值。Freemarker数据模型可以是Java对象,也可以是XML文件。Freemarker数据模型是树状结构。
Freemarker模板:使用FreeMarker模板语言(FTL)编写的文本文件,通常以.ftl作为扩展名。
IDEA:IntelliJ IDEA是java编程语言开发的集成环境。IntelliJ IDEA支持插件开发,使用插件能够有效提高我们的开发效率以及用户体验。
随着互联网技术的快速发展,软件的开发也经历着从传统的软件开发到低代码的软件开发、零代码的软件开发的演变。低代码和零代码属于快速开发工具的范围,这些工具抽象了一些通用代码,并为它们提供了可视化页面供用户操作,从而使开发人员可以快速选择、拖动和创建所需的功能组件。
一个示例中,低代码和零代码平台基本都是以云平台方式(即APaaS)提供服,这些平台提供的功能主要包括数据库表可视化设计、基于数据库表结构自动生成代码等。
一些第三方组织,如MyBatis、MyBatisPlus等,提供基于数据库表结构自动生成代码的工具,这些工具只是生成数据库表对应的Controller、Service、DAO、MyBatis XML映射等文件,没有生成项目框架相关的目录和文件,这些文件是独立于具体的项目框架的,无法直接运行,需要手工拷贝到项目中,并且进行配置、编译,才能运行。
这些项目框架生成方法只是根据框架规范获取与项目框架对应的模板数据,然后基于模板数据生成对应的项目框架文件,但缺少一个项目启动所必须的启动类、配置文件等,不能直接编译、运行,需要架构师或开发人员手工创建和配置,才能使生成的项目框架具体可运行的条件;只提供单体应用的框架,不支持微服务架构风格的项目框架;项目框架生成方法不支持多种模块类型,如单级分层模块、多级分层模块;只是生成项目框架,但无法把业务代码生成到指定的项目模块中,需要手工生成,然后手工导入,即不支持在指定业务模块自动生成代码。
基于以上技术问题,本公开的实施例提供了一种基于IDEA插件的项目工程的构建方法,包括:接收用户的项目配置信息;根据项目配置信息生成数据模型;以及根据数据模型和项目模板生成项目文件目录和目标文件,其中,项目模板包括主框架模板和业务代码模板,目标文件包括与项目文件目录对应的配置文件和业务代码文件。
图1示意性示出了根据本公开实施例的基于IDEA插件的项目工程的构建方法的应用场景图。需要注意的是,图1所示出的应用场景仅为可以用用本公开实施例的应用场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、***、环境或场景。需要说明的是,本公开实施例提供的基于IDEA插件的项目工程的构建方法及装置可用于金融领域的相关方面,也可用于除金融领域之外的任意领域,本公开实施例提供的基于IDEA插件的项目工程的构建方法及装置的应用领域不做限定。
图1示意性示出了根据本公开实施例的基于IDEA插件的项目工程的构建方法的应用场景图。
如图1所示,根据该实施例的应用场景100可以包括开发人员进行项目开发的场景。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有IDEA插件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103构建项目工程提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户项目配置信息等数据进行处理,并将处理结果(例如根据用户项目配置信息生成的项目工程、数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的基于IDEA插件的项目工程的构建方法一般可以由服务器105执行。相应地,本公开实施例所提供的基于IDEA插件的项目工程的构建装置一般可以设置于服务器105中。本公开实施例所提供的基于IDEA插件的项目工程的构建方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的基于IDEA插件的项目工程的构建装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
以下将基于图1描述的场景,通过图2~图4对公开实施例的基于IDEA插件的项目工程的构建方法进行详细描述。
图2示意性示出了根据本公开实施例的基于IDEA插件的项目工程的构建方法的流程图。
如图2所示,该实施例的基于IDEA插件的项目工程的构建方法包括操作S210~操作S230,该构建方法可以由处理器或计算设备执行。
在操作S210,接收用户的项目配置信息。
一个示例中,IDEA是java编程语言开发的集成环境。在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、创新的GUI设计等方面的功能十分强大。
本公开实施例中的IDEA插件是开发人员根据项目实例预先开发好的,主要功能包括工程脚手架、模块生成工具和代码生成工具。其中工程脚手架:基于Freemarker模板生成项目主框架,包括项目启动模块(启动类、基本配置文件等)、公共模块(常用目录结构)、自定义业务模块等;模块生成工具:根据业务需求,在已有项目中增加业务模块和基于数据库表结构在业务模块下生成业务代码;代码生成工具:根据业务需求,在已有的业务模块中基于数据库表结构在业务模块下生成业务代码。
用户使用IDEA插件默认提供的主框架模板和业务代码模板可以生成项目主体框架、业务模块和业务代码,快速构建项目工程。该模板由开发人员使用Freemarker模板语言编写,若IDEA提供的主框架模板和业务代码模板不满足项目需求,用户可以参照Freemarker模板规范,在现有数据模型范围内,自定义项目主框架模板和业务代码模板。
用户通过IDEA插件提供的操作界面输入项目配置信息。项目配置信息可以是项目生成路径、项目信息、模块信息、数据库配置信息等。
在操作S220,根据项目配置信息生成数据模型。
数据模型是一个数据容器,内部结构是一个具体多层级的项目结构的定义。根据操作S210中接收到的项目配置信息可以构建一个数据模型,将这些项目配置信息按照Freemarker模板语言规范填充到Freemarker数据模型中,以便Freemarker模板引擎根据数据模型中的Freemarker变量值处理已经定义好的Freemarker模板。
在操作S230,根据数据模型和项目模板生成项目文件目录和目标文件,其中,项目模板包括主框架模板和业务代码模板,目标文件包括与项目文件目录对应的配置文件和业务代码文件。
一个示例中,项目模板包括主框架模板和业务代码模板,由开发人员使用Freemarker模板语言编写。根据操作S220获得的数据模型和项目模板作为输入参数,调用Apache FreeMarker模板引擎,可以输出项目文件目录和各模块文件目录,以及与项目文件目录对应的配置文件和业务代码文件。
通过本公开实施例的基于IDEA插件的项目工程的构建方法,可以根据用户的项目配置信息,快速生成项目文件目录和项目框架,并基于数据库表自动生成业务代码,减少开发人员的工作量,提高开发效率,实现服务端的快速开发。
图3示意性示出了根据本公开实施例的另一种基于IDEA插件的项目工程的构建方法的流程图。
在操作S310,接收用户的项目配置信息。
根据本公开实施例,项目配置信息包括项目名称、模块名称、模块类型、组件信息和数据库配置信息。
一个示例中,用户点击IDEA插件中的工程脚手架,进入构建项目主体框架页面,在初始化设置页面,设置输出根目录和模板根目录;在项目设置页面设置项目信息,包括项目中心文名称、父级包名、版本号、描述信息、项目类型等信息,其中父级包名为Java包名的前缀,如com.gykj,后续会根据这个前缀,自动根据项目名称和模块名称生成完整的Java包名和文件目录;项目类型包括单体应用和微服务应用,单体应用和微服务应用分别对应不同的组件,当项目类型为微服务应用时,选择“微服务应用”会弹出“框架类型”选项,由架构师或开发人员选择需要使用的微服务框架:DSF框架或者SpringCloudAlibaba框架。
在组件设置页面,根据项目需要选择项目使用的组件,例如可以是日志组件、安全组件、接口文档组件、全局序列号组件、***管理组件、本地缓存组件等;在模块设置页面设置模块名称、模块类型等信息,同时可以添加或删除模块;数据库配置信息包括数据库类型、版本、数据库名称、URL、数据库用户名和密码等信息。
在操作S320,获取主框架模板和业务代码模板中的变量标签。
在操作S330,根据变量标签和项目配置信息按照模板语言规范构建数据模型。
一个示例中,开发人员根据主框架模板和业务代码模板中的FreeMarker变量标签,构建数据模型。数据模型的主要作用是作为一个数据容器,保存在操作S310中获取到的项目配置信息,包括项目生成路径、项目信息(项目名称、Package名称、版本号等)、模块信息(模块名称、模块类型)、组件信息、数据库配置信息等数据,供FreeMarker引擎使用。
在操作S340,根据数据模型和项目模板生成项目文件目录和目标文件。
图4示意性示出了本公开实施例根据数据模型和项目模板生成项目文件目录和目标文件的流程图。
如图4所示,操作S340包括操作S341~操作S344,其中操作S342为IDEA插件的工程脚手架生成项目框架的执行步骤,操作S343由模块生成工具生成业务模块目录文件的执行步骤,操作S344由代码生成工具生成业务代码文件的执行步骤。
在操作S341,获取项目名称、模块名称和模块类型。
在操作S342,根据项目名称和主框架模板生成项目主文件目录和配置文件。
一个示例中,根据操作S310中的项目配置信息获取项目名称、模块名称和模块类型等信息,根据项目名称和主框架模板自动生成项目主文件目录和配置文件。
根据本公开实施例,主框架模板还包括主框架启动模块模板、主框架公共模块模板和主框架测试模块模板。
主框架模板如下所示:
1.pt.${pn}-master:项目主文件目录模板。
a)${pn}-app:项目启动模块文件目录模板。
b)${pn}-common:项目公共模块文件目录模板。
c)${pn}-test:项目测试模块文件目录模板。
2.mmt.${pn}-${mn}:模块类型为多级的模块主目录模板。
a)${pn}-${mn}-api:服务接口模块文件目录模板。
b)${pn}-${mn}-controller:服务发布协议模块文件目录模板。
c)${pn}-${mn}-provider:服务接口实现模块文件目录模板。
3.smt.${pn}-${mn}:模块类型为单级的模块主文件目录模板。
4.test.${pn}-test.${pn}-${mn}-test:测试模块主文件目录模板。
其中,变量pn为项目名称,变量mn为模块名称,变量grp为Java包组名称,变量cmp为Java包公司名称,变量pnp为Java包项目名称。pt.${pn}-master是一级文件目录,mmt.${pn}-${mn}、smt.${pn}-${mn}、test.${pn}-test.${pn}-${mn}-test是二级文件目录,${pn}-${mn}-api、${pn}-${mn}-controller、${pn}-${mn}-provider是三级文件目录,是mmt.${pn}-${mn}的子文件目录。
根据本公开实施例,根据项目名称和主框架启动模块模板生成项目启动模块文件目录和配置文件。
主框架启动模块模板如下所示:
${pn}-app:项目启动模块主目录模板。
a)java.${grp}.${cmp}.${pnp}.app:项目启动类目录模板。
b)ProjectBootApplication.java.ftl:项目启动类模板。
c)application-dev.yml.ftl:项目启动配置文件模板。
d)logback-spring.xml.ftl:项目日志配置文件模板。
e)pom.xml.ftl:Maven POM文件模板。
一个示例中,启动模块模板根据项目名称自动生成项目的启动模块各级文件目录、启动文件、配置文件等,并将启动模块中非模板文件拷贝到对应的文件目录。通过增加启动模块模板使得生成的项目框架和业务代码可以直接编译运行,无需开发人员进行二次开发手工配置等工作,提高开发效率。
根据本公开实施例,根据项目名称和主框架公共模块模板生成项目公共模块文件目录和配置文件。
一个示例中,公共模块模板主要是根据项目名称,自动生成项目的公共模块各级文件目录、配置类等。
主框架公共模块模板如下所示:
${pn}-common:项目公共模块主目录模板。
a)java.${grp}.${cmp}.${pnp}.common:项目公共模块类目录模板。
b)pom.xml.ftl:Maven POM文件模板。
根据本公开实施例,根据项目名称和主框架测试模块模板生成项目测试模块文件目录和配置文件。
一个示例中,主框架测试模块模板主要是根据项目名称,自动生成项目的测试模块各级文件目录、测试基础类、配置文件等,并把测试模块中非模板文件拷贝到对应的文件目录。
项目测试模块模板如下所示:
${pn}-test-common:项目测试公共模块主目录模板。
a)BaseControllerTest.java.ftl:测试基础类模板。
b)application-ut.yml.ftl:测试配置文件模板。
c)pom.xml.ftl:Maven POM文件模板。
${pn}-test-start:项目测试启动模块主目录模板。
a)pom.xml.ftl:Maven POM文件模板。
通过设置项目测试模块模板,支持创建测试模块和生成测试案例代码。
在操作S343,根据项目名称、模块名称、模块类型和主框架模板生成模块文件目录和配置文件。
根据本公开实施例,模块类型包括多级模块和单级模块,主框架模板包括单级模块模板和多级模块模板。多级模块模板包括多级模块主目录模板、接口模块主目录模板、协议模块主目录模板和接口实现模块主目录模板。当模块类型为单级模块时,根据项目配置信息和单级模块模板生成单级模块文件目录和配置文件;当模块类型为多级模块时,根据项目配置信息和多级模块模板生成多级模块文件目录和配置文件。
一个示例中,单级模块指采用传统三层(即:表现层、业务层、数据访问层)结构的应用模块,单级模块只划分层级,不在划分子模块。多级模块指对一个业务模块,按照服务接口子模块、服务实现子模块、服务协议子模块划分为三个子模块。采用这种模块划分方式,对于同一个服务接口,可以具有不同的服务实现、不同的服务发布协议,并且可以很方便的支持微服务架构。对于服务实现子模块,在子模块内部采用传统应用三层结构(即:表现层、业务层、数据访问层)。通过设置单级模块模板和多级模块模板可以同时支持多种模块分层结构。
在操作S344,根据项目配置信息、数据库配置信息和业务代码模板生成业务代码文件。
根据本公开实施例,业务代码模板包括Controller类模板、服务接口类模板、服务实现类模板、MyBatis接口类模板、MyBatis映射文件模板、实体类模板和测试类入口模板。
业务代码模板如下所示:
1.controller.java.ftl:SpringMVC的controller类模板。
2.service.java.ftl:服务接口类模板。
3.serviceImpl.java.ftl:服务实现类模板。
4.mapper.java.ftl:MyBatis接口类模板。
5.mapper.xml.ftl:MyBatis映射文件模板。
6.entity.java.ftl:实体类模板。
7.testController.java.ftl:测试类入口模板。
一个示例中,业务代码模板主要是根据选定的数据库表,生成该数据库表对应的Controller、Service、DAO、MyBatis XML映射文件、单元测试文件等代码。
根据用户选择的数据库表和业务代码模板,调用Apache FreeMarker模板引擎可以生成相应的代码文件。
例如,根据数据库表结构和Controller类模板生成Controller代码文件;根据数据库表结构和服务接口类模板生成Service代码文件;根据数据库表结构和MyBatis接口类模板生成DAO文件;根据数据库表结构和MyBatis映射文件模板生成MyBatis XML映射文件;根据数据库表结构和测试类入口模板生成单元测试文件。
通过本公开实施例提供的基于IDEA插件的项目工程的构建方法,采用自定义的IDEA插件,根据用户的项目配置信息、主框架模板和业务代码模板自动生成框架目录、代码文件和配置文件,通过默认生成启动模块和公共模块,可以使生成的项目编译完成即可运行,同时支持单体架构风格和微服务架构风格,支持单模块分层结构和多模块分层结构,从而提高开发人员的开发效率。
基于上述基于IDEA插件的项目工程的构建方法,本公开还提供了一种项目工程的构建装置。以下将结合图5对该装置进行详细描述。
图5示意性示出了根据本公开实施例的项目工程的构建装置的结构框图。
如图5所示,该实施例的项目工程的构建装置500包括接收模块510、第一生成模块520和第二生成模块530。
接收模块510用于接收用户的项目配置信息。在一实施例中,接收模块510可以用于执行前文描述的操作S210,在此不再赘述。
第一生成模块520用于根据项目配置信息生成数据模型。在一实施例中,第一生成模块520可以用于执行前文描述的操作S220,在此不再赘述。
第二生成模块530用于根据数据模型和项目模板生成项目文件目录和目标文件,其中,项目模板包括主框架模板和业务代码模板,目标文件包括与项目文件目录对应的配置文件和业务代码文件。在一实施例中,第二生成模块530可以用于执行前文描述的操作S230,在此不再赘述。
根据本公开的实施例,接收模块510、第一生成模块520和第二生成模块530中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,接收模块510、第一生成模块520和第二生成模块530中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上***、基板上的***、封装上的***、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,接收模块510、第一生成模块520和第二生成模块530中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图6示意性示出了根据本公开实施例的适于实现基于IDEA插件的项目工程的构建方法的电子设备的方框图。
如图6所示,根据本公开实施例的电子设备600包括处理器601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。处理器601例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器601还可以包括用于缓存用途的板载存储器。处理器601可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 603中,存储有电子设备600操作所需的各种程序和数据。处理器601、ROM602以及RAM 603通过总线604彼此相连。处理器601通过执行ROM 602和/或RAM 603中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除ROM602和RAM 603以外的一个或多个存储器中。处理器601也可以通过执行存储在一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备600还可以包括输入/输出(I/O)接口605,输入/输出(I/O)接口605也连接至总线604。电子设备600还可以包括连接至I/O接口605的以下部件中的一项或多项:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/***中所包含的;也可以是单独存在,而未装配入该设备/装置/***中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 602和/或RAM 603和/或ROM 602和RAM 603以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机***中运行时,该程序代码用于使计算机***实现本公开实施例所提供的基于IDEA插件的项目工程的构建方法。
在该计算机程序被处理器601执行时执行本公开实施例的***/装置中限定的上述功能。根据本公开的实施例,上文描述的***、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分609被下载和安装,和/或从可拆卸介质611被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被处理器601执行时,执行本公开实施例的***中限定的上述功能。根据本公开的实施例,上文描述的***、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (12)
1.一种基于IDEA插件的项目工程的构建方法,其特征在于,包括:
接收用户的项目配置信息;
根据所述项目配置信息生成数据模型;以及
根据所述数据模型和项目模板生成项目文件目录和目标文件,
其中,所述项目模板包括主框架模板和业务代码模板,所述目标文件包括与所述项目文件目录对应的配置文件和业务代码文件。
2.根据权利要求1所述的方法,其特征在于,所述项目配置信息包括项目名称、模块名称、模块类型、组件信息和数据库配置信息。
3.根据权利要求2所述的方法,其特征在于,所述根据所述项目配置信息生成数据模型包括:
获取主框架模板和业务代码模板中的变量标签;
根据所述变量标签和所述项目配置信息按照模板语言规范构建数据模型。
4.根据权利要求2所述的方法,其特征在于,所述项目文件目录包括项目主文件目录和模块文件目录,所述根据所述数据模型和项目模板生成项目文件目录和目标文件包括:
获取所述项目名称、所述模块名称和所述模块类型;
根据所述项目名称和所述主框架模板生成项目主文件目录和配置文件;
根据所述项目名称、所述模块名称、所述模块类型和所述主框架模板生成模块文件目录和配置文件;以及
根据所述项目配置信息、数据库配置信息和所述业务代码模板生成业务代码文件。
5.根据权利要求4所述的方法,其特征在于,所述模块类型包括多级模块和单级模块,所述主框架模板包括单级模块模板和多级模块模板,所述根据所述项目名称、所述模块名称、所述模块类型和所述主框架模板生成模块文件目录和配置文件包括:
当模块类型为单级模块时,根据所述项目名称和所述单级模块模板生成单级模块文件目录和配置文件;
当模块类型为多级模块时,根据所述项目名称和所述多级模块模板生成多级模块文件目录和配置文件。
6.根据权利要求5所述的方法,其特征在于,所述多级模块模板包括多级模块主目录模板、接口模块主目录模板、协议模块主目录模板和接口实现模块主目录模板。
7.根据权利要求4所述的方法,其特征在于,所述主框架模板还包括主框架启动模块模板、主框架公共模块模板和主框架测试模块模板,所述根据所述项目名称和所述主框架模板生成项目主文件目录和配置文件包括:
根据所述项目名称和所述主框架启动模块模板生成项目启动模块文件目录和配置文件;
根据所述项目名称和所述主框架公共模块模板生成项目公共模块文件目录和配置文件;以及
根据所述项目名称和所述主框架测试模块模板生成项目测试模块文件目录和配置文件。
8.根据权利要求4所述的方法,其特征在于,所述业务代码模板包括Controller类模板、服务接口类模板、服务实现类模板、MyBatis接口类模板、MyBatis映射文件模板、实体类模板和测试类入口模板,所述根据所述项目配置信息、数据库配置信息和所述业务代码模板生成业务代码文件包括:
根据所述数据库配置信息和所述Controller类模板生成Controller代码文件;
根据所述数据库配置信息和所述服务接口类模板生成Service代码文件;
根据所述数据库配置信息和所述MyBatis接口类模板生成DAO文件;
根据所述数据库配置信息和所述MyBatis映射文件模板生成MyBatis XML映射文件;以及
根据所述数据库配置信息和所述测试类入口模板生成单元测试文件。
9.一种项目工程的构建装置,包括:
接收模块,用于接收用户的项目配置信息;
第一生成模块,用于根据所述项目配置信息生成数据模型;以及
第二生成模块,用于根据所述数据模型和项目模板生成项目文件目录和目标文件,其中,所述项目模板包括主框架模板和业务代码模板,所述目标文件包括与所述项目文件目录对应的配置文件和业务代码文件。
10.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~8中任一项所述的方法。
11.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~8中任一项所述的方法。
12.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111132339.3A CN113805877B (zh) | 2021-09-26 | 2021-09-26 | 基于idea插件的项目工程的构建方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111132339.3A CN113805877B (zh) | 2021-09-26 | 2021-09-26 | 基于idea插件的项目工程的构建方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113805877A true CN113805877A (zh) | 2021-12-17 |
CN113805877B CN113805877B (zh) | 2024-06-25 |
Family
ID=78938703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111132339.3A Active CN113805877B (zh) | 2021-09-26 | 2021-09-26 | 基于idea插件的项目工程的构建方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113805877B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI828459B (zh) * | 2022-11-15 | 2024-01-01 | 大陸商南京鼎華智能系統有限公司 | 用於產生資料模型的系統及方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6968541B1 (en) * | 2000-10-04 | 2005-11-22 | International Business Machines Corporation | Apparatus and method for template instantiation with a cross compiler |
CN102375743A (zh) * | 2011-10-20 | 2012-03-14 | 北京金和软件股份有限公司 | 一种基于模型和模板开发soa***的方法 |
CN106528165A (zh) * | 2016-11-11 | 2017-03-22 | 深圳中兴网信科技有限公司 | 代码生成方法及代码生成*** |
CN108196825A (zh) * | 2017-12-28 | 2018-06-22 | 新华三大数据技术有限公司 | 软件项目的构建方法及*** |
CN110032369A (zh) * | 2019-04-24 | 2019-07-19 | 成都市映潮科技股份有限公司 | 一种代码自动生成方法、装置及介质 |
CN112748908A (zh) * | 2020-12-31 | 2021-05-04 | 广东广宇科技发展有限公司 | 基于SSM框架的Restful服务开发方法与装置 |
-
2021
- 2021-09-26 CN CN202111132339.3A patent/CN113805877B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6968541B1 (en) * | 2000-10-04 | 2005-11-22 | International Business Machines Corporation | Apparatus and method for template instantiation with a cross compiler |
CN102375743A (zh) * | 2011-10-20 | 2012-03-14 | 北京金和软件股份有限公司 | 一种基于模型和模板开发soa***的方法 |
CN106528165A (zh) * | 2016-11-11 | 2017-03-22 | 深圳中兴网信科技有限公司 | 代码生成方法及代码生成*** |
CN108196825A (zh) * | 2017-12-28 | 2018-06-22 | 新华三大数据技术有限公司 | 软件项目的构建方法及*** |
CN110032369A (zh) * | 2019-04-24 | 2019-07-19 | 成都市映潮科技股份有限公司 | 一种代码自动生成方法、装置及介质 |
CN112748908A (zh) * | 2020-12-31 | 2021-05-04 | 广东广宇科技发展有限公司 | 基于SSM框架的Restful服务开发方法与装置 |
Non-Patent Citations (3)
Title |
---|
LIU JICHENG ETC.: "The implementation of template method pattern by aspect based on configuration file", 2015 10TH INTERNATIONAL CONFERENCE ON COMPUTER SCIENCE & EDUCATION (ICCSE), 10 September 2015 (2015-09-10) * |
林钰杰;庞伟林;: "基于FreeMarker的企业Web应用代码生成器研究", 信息技术, no. 09, 25 September 2016 (2016-09-25) * |
王博 等: "一种基于模型和模板融合的自动代码生成方法", 现代电子技术, vol. 42, no. 22, 15 November 2019 (2019-11-15) * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI828459B (zh) * | 2022-11-15 | 2024-01-01 | 大陸商南京鼎華智能系統有限公司 | 用於產生資料模型的系統及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113805877B (zh) | 2024-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11561846B2 (en) | API notebook tool | |
US9430207B1 (en) | Automated cross-platform native mobile application generation with cloud driven user interface and workflow synthesis | |
US20230236809A1 (en) | Ios application program construction method and apparatus, electronic device, and storage medium | |
US9690558B2 (en) | Orchestrating the lifecycle of multiple-target applications | |
US11797273B2 (en) | System and method for enhancing component based development models with auto-wiring | |
US20100313182A1 (en) | Extensible user interface generation | |
US9652220B2 (en) | Zero down-time deployment of new application versions | |
CN113778848A (zh) | 测试代码生成方法、装置、计算机***及介质 | |
CN111221521A (zh) | 日志代码的生成方法、装置、计算机***和可读存储介质 | |
US20200012590A1 (en) | Development-time awareness of a production dependency injection environment | |
CN110895471A (zh) | 安装包生成方法、装置、介质及电子设备 | |
CN113127361A (zh) | 应用程序的开发方法、装置、电子设备和存储介质 | |
CN114237651A (zh) | 云原生应用的安装方法、装置、电子设备和介质 | |
CN110825395B (zh) | 多插件分层部署***、设备及介质 | |
US20200097260A1 (en) | Software application developer tools platform | |
CN113805877B (zh) | 基于idea插件的项目工程的构建方法及装置 | |
US11138094B2 (en) | Creation of minimal working examples and environments for troubleshooting code issues | |
US8612964B2 (en) | Migrating unified modeling language models across unified modeling language profiles | |
US10705824B2 (en) | Intention-based command optimization | |
CN115248680A (zh) | 软件构建方法、***、设备、介质和程序产品 | |
US20230236828A1 (en) | Build-independent software framework for creating custom adapters | |
CN114691527A (zh) | 单元测试案例生成方法、装置、设备、介质和程序产品 | |
CN114035864A (zh) | 接口处理方法、接口处理装置、电子设备和存储介质 | |
CN114677114A (zh) | 基于图形拖拽的审批流程生成方法及装置 | |
CN113656041A (zh) | 数据处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |