CN113377342A - 一种项目构建方法、装置、电子设备及存储介质 - Google Patents

一种项目构建方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN113377342A
CN113377342A CN202010115184.1A CN202010115184A CN113377342A CN 113377342 A CN113377342 A CN 113377342A CN 202010115184 A CN202010115184 A CN 202010115184A CN 113377342 A CN113377342 A CN 113377342A
Authority
CN
China
Prior art keywords
sub
plug
information
configuration
specific
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
Application number
CN202010115184.1A
Other languages
English (en)
Other versions
CN113377342B (zh
Inventor
张磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanchang Node Huizhi Technology Co ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN202010115184.1A priority Critical patent/CN113377342B/zh
Publication of CN113377342A publication Critical patent/CN113377342A/zh
Application granted granted Critical
Publication of CN113377342B publication Critical patent/CN113377342B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种项目构建方法、装置、电子设备及存储介质,其中该方法包括:在主项目中创建common.gradle文件,并在common.gradle文件内定义外部变量标签;在主项目中的build.gradle文件中引入common.gradle文件;根据引入的common.gradle文件中的外部变量标签,在主项目中的build.gradle文件中为各子项目配置通用maven仓库的地址信息、引入通用插件,以及定义通用依赖配置;依次获取各子项目名称,根据当前获取的子项目名称,确定待注入的特异插件以及特异依赖配置;在主项目中的build.gradle文件中为当前子项目引入特异插件以及定义特异依赖配置。通过对build.gradle文件中各子项目的通用配置信息和特异配置信息进行修改,实现了在各子项目无感知的情况下对子项目进行配置修改,便于项目的管理维护。

Description

一种项目构建方法、装置、电子设备及存储介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种项目构建方法、装置、电子设备及存储介质。
背景技术
在利用编程语言进行大型软件项目研发过程中,设计人员通常会将项目划分为多个子项目,多个子项目独立开发、构建,最终通过依赖整合到一起。
现有技术中,通常基于Maven构建系统来进行多项目构建整合,而基于Maven系统整合时,主项目的项目对象模型(parent Project Object Model,POM)文件中定义有全部配置,子项目主动继承主项目的配置来建立的依赖关系。当某子项目依赖的配置发生变化时,若通过直接更改主项目中的配置进行修改,可能会使其他子项目引入不需要的修改,导致执行报错。为解决上述问题,通常可以减少各子项目和主项目的依赖关系,并在各子项目中重复定义依赖的配置。但减少各子项目和主项目的依赖关系,容易导致整个项目分散,不易于管理和维护。
发明内容
有鉴于此,本发明实施例提供一种项目构建方法、装置、电子设备及存储介质,构建了一种便于管理维护的项目结构。
第一方面,本发明实施例提供了一种项目构建方法,所述方法包括:
在主项目中创建common.gradle文件,并在所述common.gradle文件内定义外部变量标签,所述外部变量标签中定义有版本信息集合和依赖信息集合;
在主项目中的build.gradle文件中引入所述common.gradle文件;
根据引入的common.gradle文件中的外部变量标签,在所述主项目中的build.gradle文件中为各子项目配置通用maven仓库的地址信息、引入通用插件,以及定义通用依赖配置;
依次获取各子项目名称,根据当前获取的子项目名称,确定待注入的特异插件以及特异依赖配置;
在所述主项目中的build.gradle文件中为当前子项目引入所述特异插件以及定义所述特异依赖配置;其中,所述通用依赖配置和特异依赖配置包含于所述外部变量标签。
第二方面,本发明实施例提供了一种项目构建装置,所述装置包括:
外部变量标签定义模块,用于在主项目中创建common.gradle文件,并在所述common.gradle文件内定义外部变量标签,所述外部变量标签中定义有版本信息集合和依赖信息集合;
文件引入模块,用于在主项目中的build.gradle文件中引入所述common.gradle文件;
通用配置信息定义模块,用于根据引入的common.gradle文件中的外部变量标签,在所述主项目中的build.gradle文件中为各子项目配置通用maven仓库的地址信息、引入通用插件,以及定义通用依赖配置;
特异配置信息定义模块,用于依次获取各子项目名称,根据当前获取的子项目名称,确定待注入的特异插件以及特异依赖配置;在所述主项目中的build.gradle文件中为当前子项目引入所述特异插件以及定义所述特异依赖配置;其中,所述通用依赖配置和特异依赖配置包含于所述外部变量标签。
第三方面,本发明实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的项目构建方法。
第四方面,本发明实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时实现如上述第一方面所述的项目构建方法。
本发明实施例提供的一种项目构建方法、装置、电子设备及存储介质,在多项目构建时,可以先在主项目中创建common.gradle文件,并在common.gradle文件内定义外部变量标签;在主项目中的build.gradle文件中引入common.gradle文件;根据引入的common.gradle文件中的外部变量标签,在主项目中的build.gradle文件中为各子项目配置通用maven仓库的地址信息、引入通用插件,以及定义通用依赖配置;依次获取各子项目名称,根据当前获取的子项目名称,确定待注入的特异插件以及特异依赖配置;在主项目中的build.gradle文件中为当前子项目引入特异插件以及定义特异依赖配置。当需要对子项目的通用配置信息修改时,可修改主项目中的build.gradle文件中的通用配置信息;当需要对子项目的特异配置信息修改时,可通过主项目中的build.gradle文件将修改的特异配置信息注入各子项目。实现了在各子项目无感知的情况下对子项目配置信息的直接修改,便于项目的管理和维护。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据本发明实施例的内容和这些附图获得其他的附图。
图1为本发明实施例一提供的一种项目构建方法流程示意图;
图2为本发明实施例二提供的一种项目构建装置结构示意图;
图3为本发明实施例三提供的一种电子设备的结构示意图。
具体实施方式
为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本发明实施例的技术方案作进一步的详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下述各实施例中,每个实施例中同时提供了可选特征和示例,实施例中记载的各个特征可进行组合,形成多个可选方案,不应将每个编号的实施例仅视为一个技术方案。
实施例一
图1为本发明实施例一提供的一种项目构建方法流程示意图。本实施例公开的项目构建方法可适用于多项目构建整合的情况。本实施例公开的项目构建方法可以由电子设备来执行,具体可由电子设备中的软件和/或硬件实现。
参见图1所示,该项目构建方法包括如下步骤:
S110、在主项目中创建common.gradle文件,并在common.gradle文件内定义外部变量标签,外部变量标签中定义有版本信息集合和依赖信息集合。
在通过配置有项目构建装置的电子设备进行多项目构建整合时,可以首先在主项目的根目录下创建common.gradle文件,且可在common.gradle文件中自定义项目所需的通用插件功能模块的版本配置信息。通过自定义common.gradle文件,可实现对版本信息的集中管理,便于后续版本升级维护。其中,在common.gradle文件内定义版本配置信息,包括:定义外部变量标签,且外部变量标签中定义有版本信息集合和依赖信息集合。
在common.gradle文件中自定义项目所需的通用插件功能模块的版本配置信息,例如可以是:先自定义一个大的外部变量标签(例如ext{}标签),然后在外部变量标签内部设计至少一个集合模块,每个集合模块对应一个集合信息,且集合模块例如可以包括版本信息集合和依赖信息集合。
示例性的,版本信息集合可通过下述语句进行定义:
version_list=[
spring_boot :"2.2.0.RELEASE",
kotlin :"1.3.61",
mybatis_boot :"2.0.1",]
其中,version_list集合块可以用来表示版本信息集合;在该集合块中可以定义所有插件功能模块的版本信息,本示例中插件功能模块包括spring_boot插件,其版本为2.2.0.RELEASE;kotlin插件,其版本为1.3.61;mybatis_boot插件,其版本为2.0.1。其中,版本信息集合的集合块名称,集合块内定义的插件功能模块,以及各插件功能模块的版本信息皆可根据实际研发需求进行自定义设置。
示例性的,依赖信息集合可通过下述语句进行定义:
spring_boot=[
"mybatis_starter":
"org.mybatis.spring.boot:mybatis-spring-boot-starter:${version_list.mybatis_boot}"];
为便于描述,上述示例仅例举了版本信息集合中spring_boot功能模块的一个依赖信息。由上述语句可知spring_boot插件可引用版本信息集合中的mybatis_boot标签信息,其中“$”符号可默认指向项目中的变量,“${version_list.mybatis_boot}”也就可以用于将版本信息集合中的mybatis_boot标签进行展开。其中,一个功能模块可对应至少一个依赖信息,且不同功能模块的依赖信息可以不同。可以依次对各功能模块进行依赖信息的定义,在定义完毕后即完成了依赖信息集合的定义。
S120、在主项目中的build.gradle文件中引入common.gradle文件。
通过将自定义common.gradle文件引入主项目根目录下的build.gradle文件,可以使项目的后续环境空间直接使用common.gradle文件中定义的外部变量标签,无需重复定义外部变量标签,从而可以提高项目管理效率。
可选的,在主项目中的build.gradle文件中引入common.gradle文件,包括:在build.gradle文件中定义插件信息,以及主项目的版本信息;基于预设引入语句,在build.gradle文件中引入common.gradle文件。
定义插件信息可以理解为定义整个项目所需要的全部的插件信息,通过将插件信息分离出来定义在最顶层的build.gradle文件中,可以使项目的后续模块直接使用使用定义的插件功能。
进一步的,在build.gradle文件中定义插件信息,包括:通过plugins语句在build.gradle文件中定义插件信息,其中plugins语句中定义有插件的版本信息。其中,插件信息可通过plugins语句中id+插件名称+插件的版本信息的方式来进行定义,具体定义语句例如是:
Figure BDA0002391274080000061
Figure BDA0002391274080000071
例如上述示例中所添加的插件org.springframework.boot的版本为2.2.0.RELEASE,又如上述示例中所添加的插件org.jetbrains.kotlin.jvm的版本为1.3.61。且若id+插件名称后未添加插件版本,则可默认添加的插件为最新版本的插件。
在定义好主项目的组信息和版本信息后,子项目可通过继承主项目的版本信息来实现与主项目建立依赖关系。其中,主项目的版本信息可通过version+版本名称的方式来进行定义,具体定义语句例如是version'1.0-SNAPSHOT',且1.0-SNAPSHOT可表示主项目的版本信息。
在build.gradle文件中引入common.gradle文件时,所使用的预设引入语句,示例性的可以是:apply from:"${rootProject.projectDir}"+File.separator+"common.gradle"。通过applyfrom语句可以将根目录的build.gradle文件中引入common.gradle文件。
S130、根据引入的common.gradle文件中的外部变量标签,在主项目中的build.gradle文件中为各子项目配置通用maven仓库的地址信息、引入通用插件,以及定义通用依赖配置。
可以在build.gradle文件中定义子项目配置标签subprojects{}标签,且可以在subprojects{}标签内配置通用maven仓库的地址信息、引入通用插件,以及定义通用依赖配置。
其中,Maven仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。在Maven仓库中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。Maven仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。Maven仓库有三种类型:本地(local)、中央(central)和远程(remote)。Maven的本地仓库,在安装Maven后并不会创建,它是在第一次执行maven命令的时候才被创建。Maven中央仓库是由Maven社区提供的仓库,其中包含了大量常用的库。如果Maven在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的jar文件。Maven仓库默认在国外,国内使用难免很慢,我们可以更换为阿里云的仓库。以阿里云的仓库为例,为各子项目配置通用的maven仓库的地址信息的配置语句为:maven{url'https://maven.aliyun.com/repository/public/'}。通过上述配置语句,可以使所有子项目从上述URL对应的阿里云仓库中获取或存放相应项目构建。
其中,插件为一种工具脚本,可帮助所有子项目进行编译工作,例如compile插件是用来编译代码的工具,mybatis插件是用来自动生成数据库dao和mapper的工具。而依赖配置可提供项目编译过程中需要依赖的二方及三方包,依赖中被项目调用过的函数会与项目代码一起进行编译。
可选的,通过apply plugin语句引入通用插件和特异插件,以及通过dependencies语句引入通用依赖配置和特异依赖配置。
其中,引入的通用插件例如可以为java和kotlin插件,因为各子项目的业务代码可能是通过java或者kotlin来实现的,所有的子项目都需要这两个插件才能够支持相应的编程语言。通过apply plugin+插件名称的方式可以引入插件,示例性的,引入通用插件的语句可以是:apply plugin:'java';apply plugin:'kotlin'。即通过apply plugin:'java'可引入java插件,通过apply plugin:'kotlin'可引入kotlin插件。通过dependencies语句,可以实现定义通用依赖配置,示例性的,定义通用依赖配置的语句可以是:
Figure BDA0002391274080000091
其中,dependencies{}中可定义至少一项依赖配置,且可通过implementation+"${依赖标签库信息}"语句实现。示例性的,上述rootProject.ext.kotlin.stdlib和rootProject.ext.kotlin.reflect标签库信息,可以理解为是common.gradle文件中外部变量标签ext{}下的kotlin标签下的stdlib和refect标签库信息,其中stdlib标签库信息及reflect标签库信息可以参考kotlin标签的定义方式进行实现,在此不做赘述。
通过dependencies标签来引入各子项目通用的依赖配置信息,这些依赖配置信息全部是基于common.gradle文件的配置而来,这样就构建了整个子项目的依赖关系链,从而使得整个主项目与子项目之间产生了自动依赖联系,从而实现了多项目模块化的结构管理。
可选的,在主项目中的build.gradle文件中为各子项目配置通用maven仓库的地址信息、引入通用插件,以及定义通用依赖配置的同时,还包括:在主项目中的build.gradle文件中为各子项目定义通用的编译版本信息和编码信息。
通过为各子项目定义通用的编译版本信息和编码信息,可以使各子项目的编译和编码格式统一,以避免编译或编码异常。
示例性的,定义通用的编译版本信息的语句为:
Figure BDA0002391274080000092
Figure BDA0002391274080000101
示例性的,定义通用的编码信息的语句为:
[compileJava,compileTestJava,javadoc]*.options*.encoding='UTF-8';#将Java和TestJava的编码信息设置为utf-8,避免出现中文乱码的问题。
其中,上述编译版本信息或编码信息皆可根据实际项目需求进行更改,而并不限于上述举例。
S140、依次获取各子项目名称,根据当前获取的子项目名称,确定待注入的特异插件以及特异依赖配置。其中,可以通过getproject().name语句判断当前获取的子项目的名称,且针对该子项目名称可进行特异配置信息的注入。
S150、在主项目中的build.gradle文件中为当前子项目引入特异插件以及定义特异依赖配置;其中,通用依赖配置和特异依赖配置包含于外部变量标签。
其中,同样可采用apply plugin:'插件名'的方法引入特异插件的语句;同样可采用dependencies{}语句定义特异依赖配置,且特异依赖配置同样是common.gradle文件中外部变量标签ext{}下的标签库信息。
示例性的,引入的特异插件的插件名例如可以是io.spring.dependency-management、org.springframework.boot或kotlin-spring等,具体引入的特异插件可根据各项目实际功能进行更改。
示例性的,定义特异依赖配置的语句可以是:
Figure BDA0002391274080000102
Figure BDA0002391274080000111
其中,testCompile为编译测试代码的依赖,testImplementation为执行测试代码的依赖;runtimeOnly为只在运行代码时的依赖;implementation为执行代码的依赖。上述rootProject.ext.deps.junit、rootProject.ext.spring_boot.starter_test、rootProject.ext.spring_boot.starter_devtools、rootProject.ext.spring_boot.starter、rootProject.ext.spring_boot.starter_web、rootProject.ext.spring_boot.starter_aop、rootProject.ext.swagger.swagger_bootstrap_ui、rootProject.ext.swagger.swagger2和rootProject.ext.spring_boot.starter_mongodb皆为common.gradle文件中外部变量标签ext{}下的标签库信息。且具体定义的特异依赖配置可根据各项目实际功能进行更改。
此外,可在子项目的build.gradle文件中定义子项目的版本信息与主项目的版本信息相同,这样就能够构建子项目和主项目之间的依赖关系。示例性的,当主项目的版本信息为version'1.0-SNAPSHOT'时,子项目的版本信息也为version'1.0-SNAPSHOT',以构建子项目和主项目之间的依赖关系。
各子项目的通用maven仓库的地址信息、通用插件,以及通用依赖配置为各子项目共同所需的配置信息,特异插件以及特异依赖配置为各子项目分别特异性需求的配置信息。通过将共用的配置信息抽取主项目根目录下的build.gradle文件,并在主项目中的build.gradle文件中为各子项目注入特异配置信息,使子项目无需主动依赖主项目,可在子项目无感知的情况下对其配置信息进行定义和更新,可以便于项目维护和管理。
可选的,项目构建方法,还包括:接收版本更新指令,根据版本更新指令更新common.gradle文件内的外部变量标签。由于自定义的common.gradle文件实现了外部变量标签的集中管理,当至少一个插件功能模块进行版本更新时,可直接根据版本更新指令对根目录下common.gradle文件中相应的插件功能模块进行外部变量标签的更新,引入common.gradle文件中依赖配置的各子项目可相应进行版本更新,便于版本管理和维护。
可选的,项目构建方法,还包括:接收配置信息更新指令,并根据配置信息更新指令对通用配置信息或特异配置信息进行更新。
其中,在接收配置信息更新指令之后,可以判断配置信息更新指令类型;当配置信息更新指令为通用配置信息更新指令时,可根据通用配置信息更新指令,对主项目中的build.gradle文件中待更新的通用配置信息进行更新。当配置信息更新指令为特异配置信息更新指令时,可根据特异配置信息更新指令中的待更新子项目名称,在主项目中的build.gradle文件中查找待更新子项目;并可根据特异配置信息更新指令中的待更新的特异配置信息,对待更新子项目为各子项目注入特异配置信息。
上述步骤S110-S140由配置有项目构建装置的电子设备执行,电子设备可在主项目中创建common.gradle文件,并在common.gradle文件内定义版本配置信息(包括外部变量标签);在主项目中的build.gradle文件中引入common.gradle文件;根据引入的common.gradle文件中的外部变量标签,在build.gradle文件中定义各子项目的通用配置信息和特异配置信息。通过对build.gradle文件中各子项目的通用配置信息和特异配置信息进行修改,实现了在各子项目无感知的情况下对子项目进行配置修改,便于项目的管理维护。
本实施例提供的一种项目构建方法,可以先在主项目中创建common.gradle文件,并在common.gradle文件内定义外部变量标签;在主项目中的build.gradle文件中引入common.gradle文件;根据引入的common.gradle文件中的外部变量标签,在主项目中的build.gradle文件中定义各子项目的通用配置信息,以及为各子项目注入和特异配置信息。当需要对子项目的通用配置信息修改时,可修改主项目中的build.gradle文件中的通用配置信息;当需要对子项目的特异配置信息修改时,可通过主项目中的build.gradle文件将修改的特异配置信息注入各子项目。实现了在各子项目无感知的情况下对子项目配置信息的直接修改,便于项目的管理和维护。
实施例二
图2为本发明实施例二提供的一种项目构建装置结构示意图。参见图2所示,项目构建装置包括:
外部变量标签定义模块210,用于在主项目中创建common.gradle文件,并在common.gradle文件内定义外部变量标签,外部变量标签中定义有版本信息集合和依赖信息集合;
文件引入模块220,用于在主项目中的build.gradle文件中引入common.gradle文件;
通用配置信息定义模块230,用于根据引入的common.gradle文件中的外部变量标签,在主项目中的build.gradle文件中为各子项目配置通用maven仓库的地址信息、引入通用插件,以及定义通用依赖配置;
特异配置信息定义模块240,用于依次获取各子项目名称,根据当前获取的子项目名称,确定待注入的特异插件以及特异依赖配置;在主项目中的build.gradle文件中为当前子项目引入特异插件以及定义特异依赖配置;其中,通用依赖配置和特异依赖配置包含于外部变量标签。
可选的,所文件引入模块,包括:
信息定义子模块,在build.gradle文件中定义插件信息,以及主项目的版本信息;
文件引入子模块,用于基于预设引入语句,在build.gradle文件中引入common.gradle文件。
进一步的,信息定义子模块,具体用于通过plugins语句在build.gradle文件中定义插件信息,其中plugins语句中定义有插件的版本信息。
可选的,通用配置信息定义模块,还用于在主项目中的build.gradle文件中为各子项目定义通用的编译版本信息和编码信息。
可选的,通用配置信息定义模块和特异配置信息定义模块,分别用于通过applyplugin语句引入通用插件和特异插件,以及分别用于通过dependencies语句引入通用依赖配置和特异依赖配置。
可选的,项目构建装置,还包括:
版本更新模块,用于接收版本更新指令,根据版本更新指令更新common.gradle文件内的外部变量标签。
可选的,项目构建装置,还包括:
配置信息更新模块,用于接收配置信息更新指令,并根据配置信息更新指令对通用配置信息或特异配置信息进行更新。
本发明实施例所提供的项目构建装置可执行本发明任一实施例所提供的项目构建方法,具备执行方法相应的功能模块和有益效果。未详尽描述的技术细节,可参见本发明任一实施例所提供的项目构建方法。
实施例三
图3是本发明实施例三提供的一种电子设备的结构示意图。图3示出了适于用来实现本发明任一实施方式的示例性电子设备12的框图。图3显示的电子设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。设备12典型的是承担信息加密、解密功能的电子设备。
如图3所示,电子设备12以通用计算设备的形式表现。电子设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,存储器28,连接不同组件(包括存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture,ISA)总线,微通道体系结构(Micro Channel Architecture,MCA)总线,增强型ISA总线、视频电子标准协会(Video Electronics Standards Association,VESA)局域总线以及外围组件互连(Peripheral Component Interconnect,PCI)总线。
电子设备12典型地包括多种计算机可读介质。这些介质可以是任何能够被电子设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机装置可读介质,例如随机存取存储器(Random Access Memory,RAM)30和/或高速缓存存储器32。电子设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图3未显示,通常称为“硬盘驱动器”)。尽管图3中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如只读光盘(Compact Disc-Read Only Memory,CD-ROM)、数字视盘(Digital Video Disc-Read Only Memory,DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品40,该程序产品40具有一组程序模块42,这些程序模块被配置以执行本发明各实施例的功能。程序产品40,可以存储在例如存储器28中,这样的程序模块42包括但不限于一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
电子设备12也可以与一个或多个外部设备14(例如键盘、鼠标、摄像头等和显示器)通信,还可与一个或者多个使得用户能与该电子设备12交互的设备通信,和/或与使得该电子设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,电子设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local Area Network,LAN),广域网WideArea Network,WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与电子设备12的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、磁盘阵列(Redundant Arrays of Independent Disks,RAID)装置、磁带驱动器以及数据备份存储装置等。
处理器16通过运行存储在存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明上述实施例所提供的信息加密方法,该方法包括:
在主项目中创建common.gradle文件,并在common.gradle文件内定义外部变量标签,外部变量标签中定义有版本信息集合和依赖信息集合;在主项目中的build.gradle文件中引入common.gradle文件;根据引入的common.gradle文件中的外部变量标签,在主项目中的build.gradle文件中为各子项目配置通用maven仓库的地址信息、引入通用插件,以及定义通用依赖配置;依次获取各子项目名称,根据当前获取的子项目名称,确定待注入的特异插件以及特异依赖配置;在主项目中的build.gradle文件中为当前子项目引入特异插件以及定义特异依赖配置;其中,通用依赖配置和特异依赖配置包含于外部变量标签。
当然,本领域技术人员可以理解,处理器还可以实现本发明任一实施例所提供的信息加密方法或解密方法的技术方案。
实施例五
本发明实施例五还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所提供的项目构建方法,该方法包括:
在主项目中创建common.gradle文件,并在common.gradle文件内定义外部变量标签,外部变量标签中定义有版本信息集合和依赖信息集合;在主项目中的build.gradle文件中引入common.gradle文件;根据引入的common.gradle文件中的外部变量标签,在主项目中的build.gradle文件中为各子项目配置通用maven仓库的地址信息、引入通用插件,以及定义通用依赖配置;依次获取各子项目名称,根据当前获取的子项目名称,确定待注入的特异插件以及特异依赖配置;在主项目中的build.gradle文件中为当前子项目引入特异插件以及定义特异依赖配置;其中,通用依赖配置和特异依赖配置包含于外部变量标签。
当然,本发明实施例所提供的一种计算机可读存储介质,其上存储的计算机程序不限于如上的方法操作,还可以执行本发明任一实施例所提供的项目构建方法中的相关操作。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种项目构建方法,其特征在于,包括:
在主项目中创建common.gradle文件,并在所述common.gradle文件内定义外部变量标签,所述外部变量标签中定义有版本信息集合和依赖信息集合;
在主项目中的build.gradle文件中引入所述common.gradle文件;
根据引入的common.gradle文件中的外部变量标签,在所述主项目中的build.gradle文件中为各子项目配置通用maven仓库的地址信息、引入通用插件,以及定义通用依赖配置;
依次获取各子项目名称,根据当前获取的子项目名称,确定待注入的特异插件以及特异依赖配置;
在所述主项目中的build.gradle文件中为当前子项目引入所述特异插件以及定义所述特异依赖配置;其中,所述通用依赖配置和特异依赖配置包含于所述外部变量标签。
2.根据权利要求1所述的方法,其特征在于,所述在主项目中的build.gradle文件中引入所述common.gradle文件,包括:
在所述build.gradle文件中定义插件信息,以及主项目的版本信息;
基于预设引入语句,在build.gradle文件中引入所述common.gradle文件。
3.根据权利要求2所述的方法,其特征在于,所述在所述build.gradle文件中定义插件信息,包括:通过plugins语句在所述build.gradle文件中定义插件信息,其中所述plugins语句中定义有插件的版本信息。
4.根据权利要求1所述的方法,其特征在于,在所述主项目中的build.gradle文件中为各子项目配置通用maven仓库的地址信息、引入通用插件,以及定义通用依赖配置的同时,还包括:在所述主项目中的build.gradle文件中为各子项目定义通用的编译版本信息和编码信息。
5.根据权利要求1所述的方法,其特征在于,包括:通过apply plugin语句引入所述通用插件和所述特异插件,以及通过dependencies语句引入所述通用依赖配置和所述特异依赖配置。
6.根据权利要求1-5任一所述的方法,其特征在于,还包括:
接收版本更新指令,根据所述版本更新指令更新所述common.gradle文件内的外部变量标签。
7.根据权利要求1-5任一所述的方法,其特征在于,还包括:
接收配置信息更新指令,并根据所述配置信息更新指令对通用配置信息或特异配置信息进行更新。
8.一种项目构建装置,其特征在于,所述装置包括:
外部变量标签定义模块,用于在主项目中创建common.gradle文件,并在所述common.gradle文件内定义外部变量标签,所述外部变量标签中定义有版本信息集合和依赖信息集合;
文件引入模块,用于在主项目中的build.gradle文件中引入所述common.gradle文件;
通用配置信息定义模块,用于根据引入的common.gradle文件中的外部变量标签,在所述主项目中的build.gradle文件中为各子项目配置通用maven仓库的地址信息、引入通用插件,以及定义通用依赖配置;
特异配置信息定义模块,用于依次获取各子项目名称,根据当前获取的子项目名称,确定待注入的特异插件以及特异依赖配置;在所述主项目中的build.gradle文件中为当前子项目引入所述特异插件以及定义所述特异依赖配置;其中,所述通用依赖配置和特异依赖配置包含于所述外部变量标签。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-7中任一项所述的项目构建方法。
10.一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时实现如权利要求1-7中任一项所述的项目构建方法。
CN202010115184.1A 2020-02-25 2020-02-25 一种项目构建方法、装置、电子设备及存储介质 Active CN113377342B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010115184.1A CN113377342B (zh) 2020-02-25 2020-02-25 一种项目构建方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010115184.1A CN113377342B (zh) 2020-02-25 2020-02-25 一种项目构建方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113377342A true CN113377342A (zh) 2021-09-10
CN113377342B CN113377342B (zh) 2024-01-19

Family

ID=77568433

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010115184.1A Active CN113377342B (zh) 2020-02-25 2020-02-25 一种项目构建方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113377342B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114860253A (zh) * 2022-04-29 2022-08-05 上海阵量智能科技有限公司 一种编译方法、装置、计算机设备以及可读存储介质
CN115981614A (zh) * 2023-02-24 2023-04-18 美云智数科技有限公司 项目工程的模块化处理方法、电子设备及计算机存储介质
CN117235023A (zh) * 2023-11-15 2023-12-15 广州嘉为科技有限公司 一种远程仓库缓存管理方法、装置、设备及存储介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050114847A1 (en) * 2003-11-25 2005-05-26 International Business Machines Corporation Method, apparatus and computer program for automatically determining compile-time module dependencies
US20100153920A1 (en) * 2008-12-17 2010-06-17 Michael Stavros Bonnet Method for building and packaging sofware
CN105760184A (zh) * 2014-12-18 2016-07-13 深圳云之家网络有限公司 一种加载组件的方法和装置
CN106557347A (zh) * 2016-11-24 2017-04-05 泰康保险集团股份有限公司 软件更新方法及装置
CN107844313A (zh) * 2017-11-24 2018-03-27 武汉斗鱼网络科技有限公司 一种Android中SDK版本升级方法及装置
US20180137032A1 (en) * 2016-11-11 2018-05-17 Atlassian Pty Ltd Systems and methods for testing source code
CN108228229A (zh) * 2016-12-19 2018-06-29 深圳业拓讯通信科技有限公司 一种Maven依赖的管理方法以及系统
CN109101236A (zh) * 2018-07-06 2018-12-28 政采云有限公司 基于规则引擎和maven插件实现的项目依赖管理方法及系统
CN109933326A (zh) * 2017-12-15 2019-06-25 北京奇虎科技有限公司 改写代码的编译方法、装置及相应终端
CN110737460A (zh) * 2019-09-04 2020-01-31 厦门网宿有限公司 一种平台项目管理方法及装置
CN110764786A (zh) * 2019-12-27 2020-02-07 凯泰铭科技(北京)有限公司 一种云计算环境下优化部署资源与软件交付平台

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050114847A1 (en) * 2003-11-25 2005-05-26 International Business Machines Corporation Method, apparatus and computer program for automatically determining compile-time module dependencies
US20100153920A1 (en) * 2008-12-17 2010-06-17 Michael Stavros Bonnet Method for building and packaging sofware
CN105760184A (zh) * 2014-12-18 2016-07-13 深圳云之家网络有限公司 一种加载组件的方法和装置
US20180137032A1 (en) * 2016-11-11 2018-05-17 Atlassian Pty Ltd Systems and methods for testing source code
CN106557347A (zh) * 2016-11-24 2017-04-05 泰康保险集团股份有限公司 软件更新方法及装置
CN108228229A (zh) * 2016-12-19 2018-06-29 深圳业拓讯通信科技有限公司 一种Maven依赖的管理方法以及系统
CN107844313A (zh) * 2017-11-24 2018-03-27 武汉斗鱼网络科技有限公司 一种Android中SDK版本升级方法及装置
CN109933326A (zh) * 2017-12-15 2019-06-25 北京奇虎科技有限公司 改写代码的编译方法、装置及相应终端
CN109101236A (zh) * 2018-07-06 2018-12-28 政采云有限公司 基于规则引擎和maven插件实现的项目依赖管理方法及系统
CN110737460A (zh) * 2019-09-04 2020-01-31 厦门网宿有限公司 一种平台项目管理方法及装置
CN110764786A (zh) * 2019-12-27 2020-02-07 凯泰铭科技(北京)有限公司 一种云计算环境下优化部署资源与软件交付平台

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ARVIND RAI: "Gradle Parent Build File | Common Dependency Example", 《HTTPS://WWW.CONCRETEPAGE.COM/BUILD-TOOLS/GRADLE/GRADLE-PARENT-BUILD-FILE-COMMON-DEPENDENCY-EXAMPLE》 *
天涯浪子心愿: "study-gradleMultiPro/ build.gradle", 《HTTPS://GITEE.COM/HEXINGJIE/STUDY-GRADLEMULTIPRO/BLOB/MASTER/BUILD.GRADLE》 *
江日念;林霞;乔德新;: "Maven在Java项目中的引入及应用", 电脑知识与技术 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114860253A (zh) * 2022-04-29 2022-08-05 上海阵量智能科技有限公司 一种编译方法、装置、计算机设备以及可读存储介质
CN115981614A (zh) * 2023-02-24 2023-04-18 美云智数科技有限公司 项目工程的模块化处理方法、电子设备及计算机存储介质
CN117235023A (zh) * 2023-11-15 2023-12-15 广州嘉为科技有限公司 一种远程仓库缓存管理方法、装置、设备及存储介质
CN117235023B (zh) * 2023-11-15 2024-03-12 广州嘉为科技有限公司 一种远程仓库缓存管理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN113377342B (zh) 2024-01-19

Similar Documents

Publication Publication Date Title
US11561846B2 (en) API notebook tool
US20180276283A1 (en) Providing full data provenance visualization for versioned datasets
US10481884B2 (en) Systems and methods for dynamically replacing code objects for code pushdown
US9772890B2 (en) Sophisticated run-time system for graph processing
US9400700B2 (en) Optimized system for analytics (graphs and sparse matrices) operations
CN106062711B (zh) 用于复合控件的方法、系统和计算机存储介质
US8381176B1 (en) Software build orchestration framework
US20240045850A1 (en) Systems and methods for database orientation transformation
US7937698B2 (en) Extensible mechanism for automatically migrating resource adapter components in a development environment
US8302069B1 (en) Methods and systems utilizing behavioral data models with variants
CN101689196B (zh) Discosql:结构化查询的分布式处理
CN113377342A (zh) 一种项目构建方法、装置、电子设备及存储介质
CN118202330A (zh) 在代码更新时检查源代码有效性
CN109284126B (zh) 类库自动更新方法、装置、电子设备、存储介质
KR101924747B1 (ko) 유연성을 갖춘 메타데이터 구성 기법
CN113238739A (zh) 一种插件开发和数据获取方法、装置、电子设备及介质
CN115640279A (zh) 一种数据血缘关系的构建方法和装置
US20240118877A1 (en) System and method for decomposing monolith applications into software services
US11340897B1 (en) Subject matter expert identification for computer software
CN114595110A (zh) 针对待监听事件的埋点方法、装置、介质及电子设备
Ranabahu Abstraction driven application and data portability in cloud computing
CN112528594A (zh) 控件标识方法和设备
CN115904483A (zh) 接口文档生成方法和装置、介质和计算机设备
CN114691131A (zh) 针对用户界面ui文件的框架代码文件生成方法及装置
Kumar et al. Bringing your tools to CyVerse Discovery Environment using Docker

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
TA01 Transfer of patent application right

Effective date of registration: 20231219

Address after: Room 806 and 807, Zone A, Zhejiang University Science and Technology Park (Jiangxi), No. 698 Jingdong Avenue, Nanchang High tech Industrial Development Zone, Nanchang City, Jiangxi Province, 330000

Applicant after: Nanchang Node Huizhi Technology Co.,Ltd.

Address before: 430070 room 007, A301, third floor, building B1, software industry phase 4.1, No. 1, Software Park East Road, Donghu New Technology Development Zone, Wuhan City, Hubei Province (Wuhan area of free trade zone)

Applicant before: WUHAN DOUYU YULE NETWORK TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant