CN112379865B - 基于Maven插件机制的软件开发框架更新方法 - Google Patents
基于Maven插件机制的软件开发框架更新方法 Download PDFInfo
- Publication number
- CN112379865B CN112379865B CN202011206821.2A CN202011206821A CN112379865B CN 112379865 B CN112379865 B CN 112379865B CN 202011206821 A CN202011206821 A CN 202011206821A CN 112379865 B CN112379865 B CN 112379865B
- Authority
- CN
- China
- Prior art keywords
- file
- updating
- plug
- maven
- update
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出一种基于Maven插件机制的软件开发框架更新方法,基于Maven插件可实现与开发环境IDE快速结合,操作简便高效,对开发人员透明、减低操作门槛。自定义更新脚本,可满足各类复杂更新场景并支持对框架进行升级或者回退操作。此种更新方式可广泛应用于框架技术更新、业务功能增强、安全漏洞修复等需要进行开发框架更新的应用软件开发场景。
Description
技术领域
本发明涉及应用软件系统开发领域,涉及关注在应用软件开发过程中软件开发框架更新的方法,尤其涉及一种基于Maven插件机制的软件开发框架更新方法。
背景技术
随着移动互联网的飞速发展,软件系统应用越来越广泛,各行各业对软件系统的依赖程度越来越大,软件系统迭代更新速度及安全性将直接影响日常生产活动。基于当前软件系统需求迭代快、信息安全要求高等特点,很多软件公司均会开发封装自有开发框架,将通用或者特定业务功能进行封装形成软件框架或者组件,便于在多个项目中复用,提升开发效率。亦可在发现安全漏洞时采用相同的漏洞修复方案,快速修复相关安全漏洞。但是软件框架本身由于技术更新、功能增强或漏洞修复等原因也在不断的更新迭代,对于已使用旧软件框架进行开发的众多项目,如何快速高效的更新到新框架是许多软件公司都要面临的一大问题。
现有常规技术方案包括:
1、纯人工手动更新:开发人员基于新版本搭建开发框架,将基于旧框架开发的业务代码手动复制到新开发框架中,并修改需要更新的文件及手动执行数据库脚本,最终完成框架升级更新工作。
2、自动+手动更新:开发人员将后端业务逻辑封装打包(例如Jar包),通过Maven版本依赖管理,旧框架自动下载更新。同时开发人员将新框架前端文件(Html、Css、Js等)手动复制到旧框架中并手动更新所需文件及数据库脚本,完成开发框架更新工作。
这些方案虽能解决开发框架版本更新的问题,但还是存在如下问题:
1、人工操作、效率低、易出错:每个项目开发框架更新都需要人工介入手动操作,效率低下,且更新过程中容易出现文件遗留等问题,导致更新失败。
2、无法与开发环境IDE结合,更新门槛高:无法将框架更新操作与开发环境IDE相结合,更新操作并非对所以开发人员透明,框架更新工作需要核心开发人员完成。
3、不支持快速升/降框架版本:由于技术及安全漏洞等因素,不同项目可能需要对开发框架进行升级或者回退,目前方案无法快速支持版本回退操作。
发明内容
为了解决现有技术存在的缺陷和不足的问题,本发明提出一种基于Maven插件机制的软件开发框架更新方法,主要关注的是应用系统开发过程中软件框架更新的方法。采用一种基于Maven插件、可自定义更新脚本、支持升/降框架版本、操作简便高效的软件框架更新方法。由于此方法基于Maven插件、可自定义框架更新脚本,因此可快速与IDE相结合,适用于各类复杂框架结构更新,将框架更新工作从繁琐易错的人工操作中解放出来,极大提升更新成功率及工作效率。
本方案提出的应用系统开发过程中软件框架更新的方法。基于Maven插件可实现与开发环境IDE快速结合,操作简便高效,对开发人员透明、减低操作门槛。自定义更新脚本,可满足各类复杂更新场景并支持对框架进行升级或者回退操作。此种更新方式可广泛应用于框架技术更新、业务功能增强、安全漏洞修复等需要进行开发框架更新的应用软件开发场景。
名词解释:
Maven:Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
Maven也可被用于构建和管理各种项目,例如C#,Ruby,Scala和其他语言编写的项目。Maven曾是Jakarta项目的子项目,现为由Apache软件基金会主持的独立Apache项目。
Maven插件:Maven就其本身来说只是提供一个执行环境,它并不知道需要在项目上完成什么操作,真正操作项目的是插件(plugin),比如编译Java有Compiler插件,打包有Jar插件等。所以要让Maven完成各种各样的任务,我们需要配置不同的插件,甚至自己编写插件。
和其他Maven项目一样,Maven的插件也是一种packaging类型(类型为maven-plugin),也拥有groupId,artifactId和version。简单地讲,一个Maven插件包含了一些列的goal,每一个goal对应于一个Mojo类(Maven Old Java Object,命名来自于Pojo),每个Mojo都需要实现org.apache.maven.plugin.Mojo接口,该接口定义了一个execute方法,在开发插件时,任务就是实现这个execute方法。
本发明具体包括以下内容:
一种基于Maven插件机制的软件开发框架更新方法,其特征在于,包括:开发框架更新插件开发方法、更新包制作上传方法和更新包下载更新方法;
所述开发框架更新插件开发方法包括以下步骤:
步骤S11:创建Maven插件项目;
步骤S12:编写任务执行方法,实现开发框架更新业务逻辑;
步骤S13:根据项目pom文件配置的url及版本信息,从Maven仓库中下载对应版本的框架更新包;
步骤S14:将下载的更新包解压到本地;
步骤S15:解析更新包中的install.xml文件,形成更新指令;
步骤S16:指令执行器载入更新指令并执行,完成框架更新操作;
步骤S17:删除下载文件及解压/解析过程中生成的临时文件;
步骤S18:在项目中执行Maven的install命令,将开发好的插件安装部署到Maven仓库中;
所述更新包制作上传方法包括以下步骤:
步骤S21:创建update文件夹;
步骤S22:在update目录下分别创建adds及sqls两个文件夹;
步骤S23:将开发框架更新时新增的文件复制到adds目录下;
步骤S24:将开发框架更新时需要执行的数据库脚本复制到sqls目录下;
步骤S25:在update文件夹下,创建install.xml文件,根据实际更新操作步骤及文件编写规范,完成install文件内容编写;
步骤S26:将整个update文件夹打包成jar文件,并上传到Maven仓库中;
所述更新包下载更新方法包括以下步骤:
步骤S31:在需要进行开发框架更新的项目pom文件中添加框架更新插件并引入配置;
步骤S32:从Maven仓库下载插件到本地;
步骤S33:在项目上执行插件执行命令;
步骤S34:根据插件名称和版本信息从Maven仓库下载框架更新包;
步骤S35:插件根据更新包中的install文件解析执行更新操作。
优选地,步骤S11具体包括:创建Maven插件项目并编写任务执行类,该类继承自org.apache.maven.plugin.AbstractMojo类;
在步骤S15中,install.xml文件格式如下:
<operate>
<adds>
<add src=".\adds\a.txt" dest=".\src\b.txt"/>
</adds>
<edits>
<insert file=".\src\web.xml" row="21" node="" >
<![CDATA[
<session-config>
<session-timeout>20</session-timeout>
</session-config>
]]>
</insert>
<del file=".\src\web.xml" row="8" node=""></del>
</edits>
<dels>
<del file=".\src\c.txt" />
</dels>
<sqls>
<sql file=".\sqls\*.sql" />
</sqls>
</operate>
文件解析规则如下:
<adds>标签:解析为文件复制指令,支持将src指定的文件或文件夹复制到dest指定的路径;
<edits>标签:解析为文件编辑指令,可编辑src指定的文件,对文件内容进行插入或者删除,支持对指定的行、列进行操作;
<dels>标签:解析为文件删除指令,可将src指定的文件或文件夹删除;
<sqls>标签:解析为数据库脚本执行指令,可将src指定的数据库脚本载入,并自动完成数据库连接及脚本执行。
优选地,在步骤S24中,如果有多个sql文件且有严格执行顺序,按1-xx.sql、2-xx.sql……的方式进行文件命名。
优选地,在步骤S31中,在需要进行开发框架更新的项目pom文件中添加如下内容:
<plugin>
<groupId>aaa.bbb.ccc.ddd</groupId> //实际插件项目名称
<artifactId>tt-maven-plugin</artifactId> //实际插件模块名称
<version>xx.yy </version>//插件版本号
</plugin>。
本发明及其优选方案在应用软件开发框架更新场景中,跳出了传统手动或半自动框架更新的模式,以一种全新的思路解决了开发框架更新的相关问题。主要体现了如下优点:
1、全自动更新、提升工作效率:通过框架更新插件,全自动下载更新包进行框架更新,无需人工介入,极大提升更新效率及成功率。
2、开发环境IDE结合、简化操作:基于Mave插件开发机制,方便与开发环境结合,更新过程对开发人员透明,操作简便,门槛低。
3、自定义更新脚本、应对复杂场景:自定义一套更新脚本规范,可基于脚本编写出复杂更新逻辑,满足不同项目不同场景的框架更新需求。
4、支持版本升级/回退、更新方式灵活:可使用更新脚本制作正/反向更新逻辑,满足在技术更新、功能增强、漏洞修复等场景下的框架升级或回退操作,更新方式灵活多样。
附图说明
下面结合附图和具体实施方式对本发明进一步详细的说明:
图1为本发明实施例开发框架更新插件开发方法流程示意图;
图2为本发明实施例更新包制作上传方法流程示意图;
图3为本发明实施例更新包下载更新方法流程示意图。
具体实施方式
为让本专利的特征和优点能更明显易懂,下文特举实施例,并配合附图,作详细说明如下:
如图1-图3所示,本实施例方案主要包含开发框架更新插件开发、更新包制作上传和更新包下载更新三部分内容。
框架更新插件开发技术实现细节详述如下:
1.创建Maven-Plugin项目,并编写任务执行类,该类继承自org.apache.maven.plugin.AbstractMojo类。
2.编写任务执行方法,实现开发框架更新业务逻辑。
3.开发框架更新业务处理逻辑如下:
a)根据项目pom文件配置的url及版本信息(如未配置取插件内置默认值),从Maven仓库中下载对应版本的框架更新包。
b)将下载的更新包解压到本地。
c)解析上一步骤解压出来的文件夹中install.xml文件,形成一系列框架更新指令。install.xml文件格式如下:
<operate>
<adds>
<add src=".\adds\a.txt" dest=".\src\b.txt"/>
</adds>
<edits>
<insert file=".\src\web.xml" row="21" node="" >
<![CDATA[
<session-config>
<session-timeout>20</session-timeout>
</session-config>
]]>
</insert>
<del file=".\src\web.xml" row="8" node=""></del>
</edits>
<dels>
<del file=".\src\c.txt" />
</dels>
<sqls>
<sql file=".\sqls\*.sql" />
</sqls>
</operate>
文件解析规则如下:
<adds>标签:解析为文件复制指令,支持将src指定的文件或文件夹复制到dest指定的路径。
<edits>标签:解析为文件编辑指令,可编辑src指定的文件,对文件内容进行插入或者删除,支持对指定的行、列进行操作。
<dels>标签:解析为文件删除指令,可将src指定的文件或文件夹删除。
<sqls>标签:解析为数据库脚本执行指令,可将src指定的数据库脚本载入,并自动完成数据库连接及脚本执行。
d)指令执行器载入更新指令并执行,完成框架更新操作。
e)删除下载文件及解压/解析过程中生成的临时文件。
4.在项目中执行Maven的install命令,完成自主开发的Maven插件的安装。
框架更新包制作及上传技术实现细节详述如下:
1.框架更新包制作人员创建一个文件夹,命名为update。
2.在update目录下分别创建adds及sqls两个文件夹
3.将开发框架更新时新增的文件复制到adds目录下
4.将开发框架更新时需要执行的数据库脚本复制到sqls,如果有多个sql文件且有严格执行顺序,需要按1-xx.sql、2-xx.sql 这种方式进行文件命名。
5.在update文件夹下,创建install.xml文件,根据实际更新操作步骤及文件编写规范,完成install文件内容编写。
6.将整个update文件夹打包成jar文件
7.为步骤6打包的jar文件确定版本号等信息,并作为第三方类库上传到Maven仓库中。
框架更新包下载及更新技术实现细节详述如下:
1.在需要进行开发框架更新的项目pom文件中添加如下内容:
<plugin>
<groupId>aaa.bbb.ccc.ddd</groupId> //实际插件项目名称
<artifactId>tt-maven-plugin</artifactId> //实际插件模块名称
<version>xx.yy </version>//插件版本号
</plugin>
2.在项目上执行插件执行命令:
mvn aaa.bbb.ccc.ddd:tt-maven-plugin:xx.yy:install
框架更新插件运行,将根据框架更新插件业务处理逻辑中描述的步骤进行框架更新操作,执行完毕后自动完成整个框架更新工作。
本专利不局限于上述最佳实施方式,任何人在本专利的启示下都可以得出其它各种形式的基于Maven插件机制的软件开发框架更新方法,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本专利的涵盖范围。
Claims (4)
1.一种基于Maven插件机制的软件开发框架更新方法,其特征在于,包括:开发框架更新插件开发方法、更新包制作上传方法和更新包下载更新方法;
所述开发框架更新插件开发方法包括以下步骤:
步骤S11:创建Maven插件项目;
步骤S12:编写任务执行方法,实现开发框架更新业务逻辑;
步骤S13:根据项目pom文件配置的url及版本信息,从Maven仓库中下载对应版本的框架更新包;
步骤S14:将下载的更新包解压到本地;
步骤S15:解析更新包中的install.xml文件,形成更新指令;
步骤S16:指令执行器载入更新指令并执行,完成框架更新操作;
步骤S17:删除下载文件及解压/解析过程中生成的临时文件;
步骤S18:在项目中执行Maven的install命令,将开发好的插件安装部署到Maven仓库中;
所述更新包制作上传方法包括以下步骤:
步骤S21:创建update文件夹;
步骤S22:在update目录下分别创建adds及sqls两个文件夹;
步骤S23:将开发框架更新时新增的文件复制到adds目录下;
步骤S24:将开发框架更新时需要执行的数据库脚本复制到sqls目录下;
步骤S25:在update文件夹下,创建install.xml文件,根据实际更新操作步骤及文件编写规范,完成install.xml文件内容编写;
步骤S26:将整个update文件夹打包成jar文件,并上传到Maven仓库中;
所述更新包下载更新方法包括以下步骤:
步骤S31:在需要进行开发框架更新的项目pom文件中添加开发框架更新插件并引入配置;
步骤S32:从Maven仓库下载插件到本地;
步骤S33:在项目上执行插件执行命令;
步骤S34:根据插件名称和版本信息从Maven仓库下载框架更新包;
步骤S35:插件根据更新包中的install.xml文件解析执行更新操作;
在步骤S15中,install.xml文件格式如下:
<operate>
<adds>
<add src=".\adds\a.txt" dest=".\src\b.txt"/>
</adds>
<edits>
<insert file=".\src\web.xml" row="21" node="" >
<![CDATA[
<session-config>
<session-timeout>20</session-timeout>
</session-config>
]]>
</insert>
<del file=".\src\web.xml" row="8" node=""></del>
</edits>
<dels>
<del file=".\src\c.txt" />
</dels>
<sqls>
<sql file=".\sqls\*.sql" />
</sqls>
</operate>
文件解析规则如下:
<adds>标签:解析为文件复制指令,支持将src指定的文件或文件夹复制到dest指定的路径;
<edits>标签:解析为文件编辑指令,可编辑src指定的文件,对文件内容进行插入或者删除,支持对指定的行、列进行操作;
<dels>标签:解析为文件删除指令,可将src指定的文件或文件夹删除;
<sqls>标签:解析为数据库脚本执行指令,可将src指定的数据库脚本载入,并自动完成数据库连接及脚本执行。
2.根据权利要求1所述基于Maven插件机制的软件开发框架更新方法,其特征在于:步骤S11具体包括:创建Maven插件项目并编写任务执行类,该类继承自org.apache.maven.plugin.AbstractMojo类。
3.根据权利要求2所述基于Maven插件机制的软件开发框架更新方法,其特征在于:在步骤S24中,如果有多个sql文件且有严格执行顺序,按1-xx.sql、2-xx.sql……的方式进行文件命名。
4.根据权利要求3所述基于Maven插件机制的软件开发框架更新方法,其特征在于:在步骤S31中,在需要进行开发框架更新的项目pom文件中添加如下内容:
<plugin>
<groupId>aaa.bbb.ccc.ddd</groupId> //实际插件项目名称
<artifactId>tt-maven-plugin</artifactId> //实际插件模块名称
<version>xx.yy </version>//插件版本号
</plugin>。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011206821.2A CN112379865B (zh) | 2020-11-03 | 2020-11-03 | 基于Maven插件机制的软件开发框架更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011206821.2A CN112379865B (zh) | 2020-11-03 | 2020-11-03 | 基于Maven插件机制的软件开发框架更新方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112379865A CN112379865A (zh) | 2021-02-19 |
CN112379865B true CN112379865B (zh) | 2022-09-16 |
Family
ID=74577632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011206821.2A Active CN112379865B (zh) | 2020-11-03 | 2020-11-03 | 基于Maven插件机制的软件开发框架更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112379865B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114237572B (zh) * | 2021-12-17 | 2023-04-14 | 北京金堤科技有限公司 | 原生工程集成开发框架的方法、装置、设备及存储介质 |
CN114722161B (zh) * | 2022-06-09 | 2022-10-11 | 易方信息科技股份有限公司 | 在ide界面快速查询添加pm单任务状态的方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9223594B2 (en) * | 2011-07-01 | 2015-12-29 | Exxonmobil Upstream Research Company | Plug-in installer framework |
CN105843638A (zh) * | 2016-03-18 | 2016-08-10 | 浪潮软件集团有限公司 | 一种Spring旧版本框架的升级改造方法 |
CN106201578A (zh) * | 2016-06-25 | 2016-12-07 | 国云科技股份有限公司 | 一种软件系统更新框架 |
CN110888669B (zh) * | 2018-09-10 | 2023-04-28 | 福建天泉教育科技有限公司 | 一种在ide上创建模板工程的方法及系统 |
CN111796834B (zh) * | 2020-06-30 | 2022-10-14 | 福信富通科技股份有限公司 | 一种可组合的微服务开发框架的部署方法、装置及设备 |
-
2020
- 2020-11-03 CN CN202011206821.2A patent/CN112379865B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112379865A (zh) | 2021-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111142903B (zh) | 一种基于文件对比的配置文件交互式更新方法及装置 | |
US20150339119A1 (en) | System and Method Thereof for Creating Dynamically Attachable and Detachable Binary Files | |
CN112379865B (zh) | 基于Maven插件机制的软件开发框架更新方法 | |
JP6217277B2 (ja) | ソフトウェア開発方法及びそのためのシステム | |
US20160350206A1 (en) | Employing code overlays to facilitate software development | |
CN112306474B (zh) | 一种基于组件化模板的vue项目平滑升级方法 | |
CN112799677A (zh) | 一种编译期的hook方法、装置、设备及存储介质 | |
US11029934B2 (en) | Method and system for updating legacy software | |
CN110109671B (zh) | 一种webpack标签尺寸样式转换方法及装置 | |
CN111722868A (zh) | 一种申威防火墙快速移植高版本linux内核的方法 | |
CN111984300B (zh) | 代码复制方法及装置、电子设备和计算机可读存储介质 | |
CN111435312A (zh) | 应用程序管理方法、装置及电子设备 | |
CN113360156B (zh) | 一种ios编译方法及相关设备 | |
CN110688140B (zh) | 一种代码管理方法和终端 | |
CN110647349B (zh) | 一种实现iOS APP持续交付的方法 | |
KR100834676B1 (ko) | 소프트웨어 프로젝트 빌드 방법 | |
Suereth et al. | SBT in Action: The simple Scala build tool | |
CN113849181A (zh) | 交叉编译工具链构建方法、装置、电子设备及存储介质 | |
Olsson et al. | Git Version Control Cookbook | |
US11775293B1 (en) | Deploying a static code analyzer based on program synthesis from input-output examples | |
Glaman | Drupal 8 Development Cookbook | |
Söderberg | Automation of non-code documentation in a DevOps environment | |
TWI807824B (zh) | 具有自動升級功能的開發系統以及開發系統的自動升級方法 | |
US12014195B2 (en) | System for providing an adaptable plugin framework for application transformation to cloud | |
CN113504913B (zh) | 一种Adobe Flex代码自动转换方法 |
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 |