【技术实现步骤摘要】
一种Maven项目编译方法和装置
本专利技术涉及软件工程领域,尤其涉及一种Maven项目编译方法和装置。
技术介绍
在Maven项目中,每个项目包含若干个模块,这些模块按照Maven项目对象模型(ProjectObjectModel,POM)的方式进行管理。即,每个模块对应一个pom.xml文件,这些pom.xml形成一个树状的层次结构。Maven项目的模块之间存在依赖关系。即,一个模块编译时依赖若干个其他模块的编译结果。从树状的pom.xml文件集中,Maven工具能够解析出项目包含的模块集合,并分析出每个模块的依赖模块集合。Maven工具在模块编译之前检测模块的依赖模块的编译结果是否存在于本地仓库,如果所有依赖模块的编译结果都存在于本地仓库中,则开始编译,否则提示依赖模块不存。最后,如果模块编译成功则将模块的编译结果存入本地仓库供其他模块编译引用。如果依赖模块集合都属于同一项目,Maven工具能够决定项目内部模块的编译顺序,然而一个复杂的业务系统通常都会包含多个Maven项目,这些Maven项目所包含的模块在项目之间存在依赖关系,例如:项目A的模块A1依赖项目B的模块B3、B4,以及项目C的模块C5,但Maven工具本身不能处理依赖导致的项目之间的模块编译顺序问题。当前,处理Maven项目之间的模块编译依赖的方法是:依次编译系统所属的项目,每个项目编译成功的模块将编译结果存入Maven的本地仓库;然后多次编译失败的项目,直到每个项目的所有模块都编译成功。在这种编译方式下,若一个业务系统拥有较多的Maven ...
【技术保护点】
1.一种Maven项目编译方法,其特征在于,包括:/n确定业务系统中所有Maven项目的每一个模块的系统内部依赖模块;/n循环遍历未确定编译序号的模块,将没有系统内部依赖模块的模块的编译序号确定为1、将有系统内部依赖模块且系统内部依赖模块的编译序号已确定的模块的编译序号确定为当前最大编译序号加1,直至所有模块的编译序号均已确定;/n由编译序号2至最大编译序号依次遍历所述业务系统中所有Maven项目,对于任一Maven项目,若该Maven项目的目标模块只依赖该项目中编码顺序为当前遍历的编译序号减1的模块,则将该Maven项目的目标模块追加至该Maven项目中编码顺序为当前遍历的编译序号减1的模块之后;以任意编译序号遍历所述业务系统中所有Maven项目时,若所有Maven项目的目标模块均为空集,则将编译序号大于当前编译序号的所有模块的编译序号减1,任一Maven项目的目标模块为该Maven项目中编译序号与当前遍历的编译序号相同的模块;/n按照各Maven项目的模块的编译序号最大值从小到大对各Maven项目进行排序;/n根据各模块的编译序号以及各模块所属Maven项目的排序对各模块进行编译。 ...
【技术特征摘要】
1.一种Maven项目编译方法,其特征在于,包括:
确定业务系统中所有Maven项目的每一个模块的系统内部依赖模块;
循环遍历未确定编译序号的模块,将没有系统内部依赖模块的模块的编译序号确定为1、将有系统内部依赖模块且系统内部依赖模块的编译序号已确定的模块的编译序号确定为当前最大编译序号加1,直至所有模块的编译序号均已确定;
由编译序号2至最大编译序号依次遍历所述业务系统中所有Maven项目,对于任一Maven项目,若该Maven项目的目标模块只依赖该项目中编码顺序为当前遍历的编译序号减1的模块,则将该Maven项目的目标模块追加至该Maven项目中编码顺序为当前遍历的编译序号减1的模块之后;以任意编译序号遍历所述业务系统中所有Maven项目时,若所有Maven项目的目标模块均为空集,则将编译序号大于当前编译序号的所有模块的编译序号减1,任一Maven项目的目标模块为该Maven项目中编译序号与当前遍历的编译序号相同的模块;
按照各Maven项目的模块的编译序号最大值从小到大对各Maven项目进行排序;
根据各模块的编译序号以及各模块所属Maven项目的排序对各模块进行编译。
2.根据权利要求1所述的Maven项目编译方法,其特征在于,所述根据各模块的编译序号以及各模块所属Maven项目的排序对各模块进行编译,包括:
根据各模块的编译序号,由小到大依次对各模块进行编译,以及根据各模块所属Maven项目的排序,由先到后依次对编译序号相同的模块进行编译。
3.根据权利要求1所述的Maven项目编译方法,其特征在于,所述方法还包括:
判断第一模块集合是否与第二模块集合相同;所述第一模块集合为第n次遍历未确定编译序号的模块之后,未确定编译序号的模块组成的集合,所述第二模块集合为第n+1次遍历未确定编译序号的模块之后,未确定编译序号的模块组成的集合,n为正整数;
若所述第一模块集合与所述第二模块集合相同,则发出警告信息;所述警告信息用于指示模块之间存在循环依赖。
4.根据权利要求3所述的Maven项目编译方法,其特征在于,在发出所述警告信息之后,所述方法还包括:
结束循环遍历未确定编译序号的模块。
5.根据权利要求1-4任一项所述的Maven项目编译方法,其特征在于,在根据各模块的编译序号以及各模块所属Maven项目的排序对各模块进行编译之前,所述方法还包括:
对编译顺序相邻且所属Maven项目相同的模块...
【专利技术属性】
技术研发人员:张世伟,李文,
申请(专利权)人:迈普通信技术股份有限公司,
类型:发明
国别省市:四川;51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。