本发明专利技术的软件项目编译方法,包括缓存分支代码的文件快照的步骤;根据所述文件快照确定修改模块的步骤和对修改模块进行源码编译,对未修改模块进行二进制编译替换的步骤
【技术实现步骤摘要】
一种软件项目编译方法
[0001]本专利技术涉及软件开发领域,尤其涉及软件项目的编译方法,旨在提高大型软件项目的编译效率
。
技术介绍
[0002]软件项目在上线运营前,通常需要经历编写
、
编译
、
打包
、
部署几个步骤,这些步骤在软件的开发
、
测试过程中也不断在重复
。
传统的软件项目中,任何源文件的修改,都会导致构建工具对整个项目的源代码进行重新编译
、
打包和部署,才能让修改生效
。
[0003]但随着软件项目规模越来越大,编译一次所耗时间越来越长,而且软件的迭代也越来越频繁,如果使用传统的编译方法,会导致大量时间被浪费在对没有修改的部分进行编译,造成开发资源的浪费
。
[0004]如果每次的编译能仅针对有修改的部分进行源码编译,对没有修改的部分进行二进制码编译,将大大提高整个项目的编译效率
。
但现有技术达成这一目标的方式需要手动配置源码编译的模块和二进制编译模块
。
比如安卓平台,就需要在
local.properties
文件中配置
localBuildSourceModule
项来指定源码编译的模块
。
对于大型项目而言,手动配置的缺点是显然的:当修改涉及多个模块时,哪些模块修改
、
哪些模块没修改的判断容易出错;对修改的模块配置源码编译时也容易出错,这类错误往往极难发现,导致排查的成本高昂
。
技术实现思路
[0005]本专利技术的软件项目编译方法,包括缓存分支代码的文件快照的步骤;根据所述文件快照确定修改模块的步骤和对修改模块进行源码编译,对未修改模块进行二进制编译替换的步骤
。
[0006]优选地,上述软件项目编译方法中,所述缓存分支代码的文件快照的时间点为检出分支代码时
。
[0007]优选地,上述软件项目编译方法中,所述缓存分支代码的文件快照的步骤中,缓存的内容包括文件的时间戳和
/
或文件的全部内容
。
[0008]优选地,上述软件项目编译方法中,所述根据所述文件快照确定修改模块的步骤包括:将所述文件快照存入第一集合;将所述软件项目文件存入第二集合;遍历所述第一集合及第二集合,如果一个文件存在于所述第一集合而不在所述第二集合,则将所述文件添加进所述第二集合;如果一个文件既存在于所述第一集合又存在于所述第二集合,则从所述第二集合中删除所述文件
。
[0009]优选地,上述软件项目编译方法中,所述对未修改模块进行二进制编译替换的步骤中,包括在构建工具对项目模块进行依赖解析时将无需要进行源码编译的工程模块依赖替换成二进制依赖的步骤
。
[0010]优选地,上述软件项目编译方法中,将无需要进行源码编译的工程模块依赖替换
成二进制依赖的步骤包括:以声明方式将插件注入到所述软件项目的各模块;使用第三集合封装所述软件项目中的工程模块依赖;根据所述第二集合,对所述第三集合元素进行二进制依赖替换
。
[0011]本专利技术的软件项目编译方法,通过改进模块修改与否的判断逻辑
、
模块编译的配置方法和模块依赖关系的管理方法,实现了软件项目的编译效率的提高
。
附图说明
[0012]图1为本专利技术实施方式的流程图
。
具体实施方式
[0013]以下通过特定的具体实例说明本专利技术的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本专利技术的其他优点与功效
。
本专利技术还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本专利技术的精神下进行各种修饰或改变
。
[0014]图1为本专利技术编译方法的流程图
。
步骤
S1
表示缓存分支代码的文件快照
。
目前的软件项目开发过程中都会使用版本控制系统,开发人员通常只负责部分模块,但在开发前,需要先从版本控制系统中检出项目的分支代码
。
缓存文件快照的时间点即为检出分支代码时,时间点靠后,容易引起修改内容判断的不准确
。
快照的对象是该分支内的所有模块代码
。
文件快照主要用作判断文件是否存在修改时的比对基础,因此快照的内容可以根据具体比对的方法而定
。
例如:对比是根据文件的修改时间戳判断是否存在修改,那么快照文件应当包含文件的修改
/
创建时间戳;如果对比是根据文件的内容
/
文件哈希值,则快照文件应当包含完整文件内容
。
实践中对比方式也可以综合使用,则缓存的内容也应当相应调整
。
[0015]步骤
S2
表示根据文件快照确定修改模块
。
将项目文件与文件快照进行对比,就可以判断出哪些文件进行了修改,对比方式是比较文件快照与项目文件的时间戳
、
文件内容等,如果项目文件的时间戳比文件快照中的文件更新,则可以认为项目文件存在修改
。
本例采用的对比方式为:将快照文件存入集合类型
(Map)
的变量
(
例如
originalFileSnapshot)
,利用集合类型不允许重复元素的特点,避免文件的重复对比
。
将项目文件存入另一集合类型变量
(
例如
curFileSnapshots)
,然后遍历两个集合:如果一个文件存在于
curFileSnapshots
而不在
originalFileSnapshot
中,则该文件为新增文件,将其添加进
originalFileSnapshot
;如果一个文件既在
curFileSnapshots
又在
originalFileSnapshot
,则说明该文件没有修改,将其从
originalFileSnapshot
中删除;对于仅存在于
originalFileSnapshot
而不在
curFileSnapshots
中的文件,说明其要么被删除,要么被编辑,无需要处理
。
根据上述规则遍历后的集合
originalFileSnapshot
,其中文件就是编辑的文件,如果集合不为空,则表明需要进行源码编译
。
[0016]步骤
S3
对修改模块进行源码编译,对未修改模块进行二进制编译替换
。
以安卓平台为例,以下分别是工程模块和二进制依赖的声明方式,前者将对所依赖模块进行源码编译,后者将对所依赖模块进行二进制码编译:
本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.
一种软件项目编译方法,其特征在于,包括:缓存分支代码的文件快照的步骤;根据所述文件快照确定修改模块的步骤;对修改模块进行源码编译,对未修改模块进行二进制编译替换的步骤
。2.
根据权利要求1所述的软件项目编译方法,其特征在于,所述缓存分支代码的文件快照的时间点为检出分支代码时
。3.
根据权利要求1所述的软件项目编译方法,其特征在于,所述缓存分支代码的文件快照的步骤中,缓存的内容包括文件的时间戳和
/
或文件的全部内容
。4.
根据权利要求1所述的软件项目编译方法,其特征在于,所述根据所述文件快照确定修改模块的步骤包括:将所述文件快照存入第一集合;将所述软件项目文件存入第二集合;遍历所述第一集合及...
【专利技术属性】
技术研发人员:张林,吕贝尔,
申请(专利权)人:小红书科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。