CN113326481B - 一种项目代码自动构建打包方法、装置、系统及介质 - Google Patents

一种项目代码自动构建打包方法、装置、系统及介质 Download PDF

Info

Publication number
CN113326481B
CN113326481B CN202110612276.5A CN202110612276A CN113326481B CN 113326481 B CN113326481 B CN 113326481B CN 202110612276 A CN202110612276 A CN 202110612276A CN 113326481 B CN113326481 B CN 113326481B
Authority
CN
China
Prior art keywords
current
construction
maven
package
constructing
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
Application number
CN202110612276.5A
Other languages
English (en)
Other versions
CN113326481A (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.)
Beijing Lianchuang Xintian Technology Co ltd
Original Assignee
Beijing Lianchuang Xintian 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 Beijing Lianchuang Xintian Technology Co ltd filed Critical Beijing Lianchuang Xintian Technology Co ltd
Priority to CN202110612276.5A priority Critical patent/CN113326481B/zh
Publication of CN113326481A publication Critical patent/CN113326481A/zh
Application granted granted Critical
Publication of CN113326481B publication Critical patent/CN113326481B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/30Computing systems specially adapted for manufacturing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种项目代码自动构建打包方法、装置、系统及介质,属于软件开发领域。该方法主要包括,在项目代码构建过程中根据本次打包需求,对需打包内容、是否执行maven编译构建以及是否加密进行选择;若选择执行maven编译构建,则调用当前配置maven构建工具对需打包内容执行编译构建得到当前内容包;若选择进行加密,则调用混淆加密组件对当前内容包的全部或者部分内容进行混淆加密得到当前加密内容包;以及,调用归集插件根据当前项目的构建目录结构归集当前加密内容包或者当前内容包得到当前打包文件。本申请使得项目代码构建打包运维操作标准化,并且更加灵活、安全。

Description

一种项目代码自动构建打包方法、装置、系统及介质
技术领域
本发明涉及软件开发领域,尤其涉及一种项目代码自动构建打包方法、装置、系统及介质。
背景技术
现有技术中,Java项目代码编译构建工具主要有ant、maven、gradle等。其中发布于2004年的主流构建工具Maven能够依靠约定(convention)并提供现成的可调用的目标(goal)。其具备从网络上自动下载依赖的能力,这一点革命性地改变了我们开发软件的方式。Maven主要聚焦于依赖管理,并且具有多模块构建、一致的项目结构、一致的构建模型和插件机制,Maven的项目结构、构建建模都是标准化的,对我们日常编译构建带来很多便利。但是其XML作为配置文件的格式有严格的结构层次和标准,定制化目标(goal)很困难,当我们需要构建成需要的自定义结构,加入不同的构建过程时,则无法满足。
发明内容
针对现有技术存在的问题,本申请主要提供一种项目代码自动构建打包方法、装置、系统及介质,通过集成并调用根据当前项目的构建目录以及加密需求增加了额外配置项和设置项的构建工具,混淆加密组件以及归集插件,实现一键项目全自动编译、构建以及打包。增加源代码安全性并为公司从开发到运维操作规范了标准。
为了实现上述目的,本申请采用的一个技术方案是:提供一种项目代码自动构建打包方法,其包括:
在项目代码构建过程中根据本次打包需求,对需打包内容、是否执行maven编译构建以及是否加密进行选择;若选择执行maven编译构建,则调用当前配置maven构建工具对需打包内容执行编译构建得到当前内容包;若选择进行加密,则调用混淆加密组件对当前内容包的全部或者部分内容进行混淆加密得到当前加密内容包;以及,调用归集插件根据当前项目的构建目录结构归集当前加密内容包或者当前内容包得到当前打包文件;其中,当前配置maven构建工具为根据当前项目的构建目录结构,以及混淆加密组件进行混淆加密的需求,增加了额外的配置项和设置项的maven构建工具。
本申请采用的另一个技术方案是:提供一种项目代码自动构建打包装置,其包括:选择模块,用于在项目代码构建过程中根据本次打包需求,对需打包内容、是否执行maven编译构建以及是否加密进行选择;编译构建执行模块,用于若选择执行maven编译构建,则调用当前配置maven构建工具对需打包内容执行编译构建得到当前内容包;加密执行模块,用于若选择进行加密,则调用混淆加密组件对当前内容包的全部或者部分内容进行混淆加密得到当前加密内容包;以及,归集执行模块,用于调用归集插件根据当前项目的构建目录结构归集当前加密内容包或者当前内容包得到当前打包文件;其中,当前配置maven构建工具为根据当前项目的构建目录结构,以及混淆加密组件进行混淆加密的需求,增加了额外的配置项和设置项的maven构建工具。
本申请采用的另一个技术方案是:提供一种项目代码自动构建打包系统,其集成有当前配置maven构建工具、混淆加密组件、归集插件以及上述方案中的项目代码自动构建打包装置;其中,当前配置maven构建工具为根据当前项目的构建目录结构,以及混淆加密组件进行混淆加密的需求,增加了额外的配置项和设置项的maven构建工具。
本申请采用的另一个技术方案是:提供一种计算机可读存储介质,其存储有计算机指令,该计算机指令被操作以执行上述方案中的项目代码自动构建打包方法。
本申请的技术方案可以达到的有益效果是:提供了一种项目代码自动构建打包方法、装置、系统及介质,通过集成以及调用根据当前项目的构建目录结构以及加密需求增加了额外的配置项和设置项的maven构建工具,混淆加密组件以及归集插件,得以只需简单按选项选择需要,灵活配置生成不同的目录以及内容信息,实现了一键项目全自动编译、构建以及打包功能,还可以根据实际需要自定义增加或减少构建归集内容,非常灵活自主;
对构建文件进行了加密,能够确保源码不被泄露,能够有力的保障公司源码安全与技术知识产权的安全性;
打包构建过程与项目目录结构完全贴合,统一的构建、部署目录,给后续运维带来很大便利,给公司的从开发到运维操作规范了标准。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一种项目代码自动构建打包方法的一个具体实施方式的流程示意图;
图2是本申请一种项目代码自动构建打包方法的一个具体实例中用户交互界面示意图;
图3是本申请一种项目代码自动构建打包方法的一个具体实例中主文件包、自主类库、启停脚本目录、以及第三方类库示意图;
图4是本申请一种项目代码自动构建打包方法一个具体实施例的流程示意图;
图5是本申请一种项目代码自动构建打包装置的一个具体实施方式的流程示意图;
图6是本申请一种项目代码自动构建打包装置的一个具体实施例的示意图;
图7是本申请一种项目代码自动构建打包系统的一个具体实施方式的示意图;
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
下面结合附图对本申请的较佳实施例进行详细阐述,以使本申请的优点和特征能更易于被本领域技术人员理解,从而对本申请的保护范围做出更为清楚明确的界定。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
传统的软件开发中Java项目代码构建时,ant、maven、gradle等Java构建组件各具优势。Ant是第一个“现代”构建工具,其基于过程式编程,在最初的版本之后,逐渐具备了支持插件的功能。Ant主要的不足是用XML(可扩展标记语言)作为脚本编写格式,XML本质上是层次化的,并不能很好地贴合Ant过程化编程的初衷。Ant的另外一个问题是,它的XML文件很快就大得无法管理。Maven能够依靠约定(convention)并提供现成的可调用的目标(goal)。其具备从网络上自动下载依赖的能力,这一点革命性地改变了我们开发软件的方式。Maven主要聚焦于依赖管理,但是其XML作为配置文件的格式有严格的结构层次和标准,定制化目标很困难。Gradle结合了前两者的优点,在此基础之上做了很多改进。它具有Ant的强大和灵活,又有Maven的生命周期管理且易于使用。Gradle不用XML,它使用基于Groovy(一种基于Java虚拟机的敏捷动态语言)的专门的DSL(领域定义语言),从而使Gradle构建脚本变得比用Ant和Maven写的要简洁清晰。
图1示出了本申请一种项目代码自动构建打包方法的一个具体实施方式。
在图1示出的具体实施方式中,本申请公开的一种项目代码自动构建打包方法包括,过程S101,在项目代码构建过程中根据本次打包需求,对需打包内容、是否执行maven编译构建以及是否加密进行选择;过程S102,若选择执行maven编译构建,则调用当前配置maven构建工具对需打包内容执行编译构建得到当前内容包;过程S103,若选择进行加密,则调用混淆加密组件对当前内容包的全部或者部分内容进行混淆加密得到当前加密内容包;以及,过程S104调用归集插件根据当前项目的构建目录结构归集当前加密内容包或者当前内容包得到当前打包文件;其中,当前配置maven构建工具为根据当前项目的构建目录结构,以及混淆加密组件进行混淆加密的需求,增加了额外的配置项和设置项的maven构建工具。
通过调用根据当前项目的构建目录结构以及加密需求,增加了额外的配置项和设置项的maven构建工具,混淆加密组件,以及归集插件,只需简单按选项选择需要,灵活配置生成不同的目录以及内容信息,实现了一键项目全自动编译、构建、打包功能,还可以根据实际需要自定义增加或减少构建归集内容,非常灵活自主;并且对构建文件进行了加密,能够确保源码不被泄露,能够有力的保障公司源码安全与技术知识产权的安全性;此外打包构建过程与项目目录结构完全贴合,统一的构建、部署目录,给后续运维带来很大便利,给公司的开发到运维操作规范了标准。
图1的示出的过程S101表示的是在项目代码构建过程中根据本次打包需求,对需打包内容、是否执行maven编译构建以及是否加密进行选择的过程,只需简单按选项选择需要,灵活配置生成不同的目录以及内容信息,确保能够根据本次打包需求,保证完成打包任务的同时,减少不必要的打包内容和打包步骤。
在本申请的一个具体实例中,如图2所示,通过一个简单的用户交互界面,对需打包内容、是否执行maven编译构建以及是否加密进行选择,通过用户交互界面进行选择使得选择的过程方便易操作。
在本申请的一个具体实施例中,上述根据本次打包需求,对需打包内容进行选择的过程包括,根据对当前打包文件的部署是否为首次部署,对启停脚本目录以及第三方类库是否为需打包内容进行选择,若对当前打包文件的部署是首次部署,则选择将启停脚本目录以及第三方类库作为需打包内容,若对当前打包文件的部署不是首次部署,则选择不将启停脚本目录以及第三方类库作为需打包内容。
在本申请的一个具体实例中,在对需打包内容进行选择时,需对是否只打包如图3所示的主文件包(主jar包)和自主类库(sys_lib),还是把启停脚本目录(bin目录)也打包进行选择,一般情况下,第一次部署需要把启停脚本目录bin目录也打包出来,后续更新部署时只需要打包更新自主类库和主文件包即可。
在本申请的一个具体实例中,在对需打包内容进行选择时,需对是否把maven构建工具依赖的如图3所示的第三方类库(lib目录文件)打包出来。选项作用和打包内容类似,一般在第一次部署时需要选择是把第三方类库一起打包;后续更新部署时,没有用到新第三方类库时,可以选择不打包更新。
在本申请的一个具体实施例中,上述根据本次打包需求,对是否执行maven编译构建以及是否加密进行选择的过程包括,根据本次打包之前的上一次打包过程是否执行过maven编译构建,以及当前项目的项目代码是否发生过变化,选择是否执行maven编译构建;若本次打包之前的上一次打包过程未执行过maven编译构建或者当前项目的项目代码发生过变化,则选择执行maven编译构建;若本次打包之前的上一次打包过程执行过maven编译构建并且当前项目的项目代码没有发生过变化,则选择不执行maven编译构建。
在本申请的一个具体实例中,在对是否执行maven编译构建进行选择时,默认为选择执行,选择执行后将自动调用当前配置maven变异构建工具命令进行编译、构建。
在本申请的一个具体实施例中,上述根据本次打包需求对是否加密进行选择时,默认日常打包构建时选择不加密。
在本申请的一个具体实施例中,上述根据本次打包需求对是否加密进行选择时,当需要正式构建部署或是需要部署应用到外方服务器,需要对部署文件进行保护时,可以选择加密打包,选择加密打包后如图3所示的自主类库sys_lib和可执行主jar包都会进行混淆加密。
图1的示出的过程S102表示的是若选择执行maven编译构建,则调用当前配置maven构建工具对需打包内容执行编译构建得到当前内容包。
现有技术中的构建工具maven依赖管理系统、多模块构建、一致的项目结构、一致的构建模型和插件机制,Maven的项目结构、构建建模都是标准化的,对我们日常编译构建带来很多便利,但是当我们需要构建成需要的自定义结构,加入不同的构建过程时,则无法满足,对于特定需要的自定义目录结构,不能直接支持,需要额外的配置和设置项,并且在打包过程中加入加密混淆的步骤时,现有技术中的maven构建工具也需要额外配置来增加构建步骤对于一般开发人员来说不是每个人都会配置。
本申请将现有技术中的maven构建工具根据当前项目的构建目录结构,以及混淆加密组件进行混淆加密的需求,增加了额外的配置项和设置项的maven构建工具,得到了当前配置maven编译构建工具,就能够使一般开发人员根据实际需求,一键项目全自动编译、构建、打包功能,还可以根据实际需要自定义增加或减少构建归集内容,非常灵活自主。
图1示出的过程S103表示的是若选择进行加密,则调用混淆加密组件对当前内容包的全部或者部分内容进行混淆加密得到当前加密内容包的过程,能够保证避免泄露,保障公司源代码与技术知识产权的安全性。
在本申请的一个具体实施例中,引入xjar混淆加密组件对当前内容包中的全部或者部分内容进行加密,避免源码泄露以及被反编译。xjar混淆加密组件的加密方式拥有无代码侵入的、完全内存解密、支持jdk(Java软件开发工具包)所有内置加密方式、可选择加密的资源文件和动态生成Go启动器有效保护密码泄露等特性,从而能够有力的保障公司源码与技术知识产权的安全性。
在本申请的一个具体实例中,若当前打包文件的部署是为首次部署,其需打包内容包括主文件包(主jar包)、自主类库(sys_lib)、启停脚本目录(bin目录)以及第三方类库(lib目录),此时,是需要对当前内容包中包括主文件包(主jar包)和自主类库(sys_lib)的部分内容进行加密即可。
在本申请的一个具体实例中,若当前打包文件的部署不是首次部署,其需打包内容只包括主文件包(主jar包)以及自主类库(sys_lib),此时,需要对当前内容包中包括主文件包(主jar包)和自主类库(sys_lib)的全部内容进行加密。
图1示出的过程S104表示的是,调用归集插件根据当前项目的构建目录结构归集当前加密内容包或者当前内容包得到当前打包文件的过程。
在本申请的一个具体实施例中,调用归集插件Assembly,对maven编译构建结果进行归集打包。Assembly插件的主要作用是,允许用户将项目输出与它的依赖项、模块、站点文档、和其他文件一起组装成一个可分发的归档文件。
可以自动按照指定的目录结构归集项目部署文件,使得打包构建过程与项目目录结构完全贴合,统一的构建、部署目录,对于实施、维护的标准化操作有很大的优势。
在本申请的一个具体实施例中,上述调用归集插件根据当前项目的构建目录结构归集当前加密内容包或者当前内容包得到当前打包文件的过程包括,若选择加密,则调用归集插件根据当前项目的构建目录结构归集当前加密内容包得到当前打包文件;若选择不加密,则调用归集插件根据当前项目的构建目录结构归集当前内容包得到当前打包文件。
在本申请的一个具体实例中,上述调用归集插件根据当前项目的构建目录结构归集当前加密内容包或者当前内容包得到当前打包文件的过程包括,对主文件包(主jar包)、自主类库(sys_lib)、启停脚本目录(bin目录)以及第三方类库(lib目录)进行统一归集部署,便于实施、维护的标准化操作。
在本申请的一个具体实施例中,本申请的项目代码自动构建打包方法还包括,如图4的S405所示,将当前打包文件根据当前项目的打包文件目录路径进行存储的过程。
打包工具提示打包成功后,进入到项目路径下package目录,即为打包归集好的相关文件,按需要拷贝上传部署即可完成工作。
图5示出了本申请一种项目代码自动构建打包装置的一个具体实施方式,其包括选择模块501,用于在项目代码构建过程中根据本次打包需求,对需打包内容、是否执行maven编译构建以及是否加密进行选择;编译构建执行模块502,用于若选择执行maven编译构建,则调用当前配置maven构建工具对需打包内容执行编译构建得到当前内容包;加密执行模块503,用于若选择进行加密,则调用混淆加密组件对当前内容包的全部或者部分内容进行混淆加密得到当前加密内容包;以及,归集执行模块504,用于调用归集插件根据当前项目的构建目录结构归集当前加密内容包或者当前内容包得到当前打包文件;其中,当前配置maven构建工具为根据当前项目的构建目录结构,以及混淆加密组件进行混淆加密的需求,增加了额外的配置项和设置项的maven构建工具。
通过集成并调用根据当前项目的构建目录结构以及加密需求,增加了额外的配置项和设置项的maven构建工具,混淆加密组件,以及归集插件,只需简单按选项选择需要灵活配置生成不同的目录以及内容信息,实现了一键项目全自动编译、构建、打包功能,还可以根据实际需要自定义增加或减少构建归集内容,非常灵活自主;对构建文件进行了加密,能够确保源码不被泄露,能够有力的保障公司源码安全与技术知识产权的安全性;打包构建过程与项目目录结构完全贴合,统一的构建、部署目录,给后续运维带来很大便利,给公司的开发到运维操作规范了标准。
图5示出的选择模块501表示的是用于在项目代码构建过程中根据本次打包需求,对需打包内容、是否执行maven编译构建以及是否加密进行选择的模块,只需简单按选项选择需要灵活配置生成不同的目录以及内容信息,确保能够根据本次打包需求,保证完成打包任务的同时,减少不必要的打包内容和打包步骤。
在本申请的一个具体实施例中,选择模块包括如图2以及图6所示的用户交互界面,上述用户界面上显示有需打包内容、是否执行maven编译构建以及是否加密的选项供用户操作选择,用户通过在上述用户界面上对各选项进行选择,能够使得选择的过程方便易操作。
在本申请的一个具体实施例中,上述选择模块501,能够根据当前打包文件的部署是否为首次部署,对启停脚本目录以及第三方类库是否为需打包内容进行选择,若对当前打包文件的部署是首次部署,则选择将启停脚本目录以及第三方类库作为需打包内容,若对当前打包文件的部署不是首次部署,则选择不将启停脚本目录以及第三方类库作为需打包内容。
在本申请的一个具体实例中,上述选择模块501,能够对是否只打包如图3所示的主文件包(主jar包)和自主类库(sys_lib),还是把启停脚本目录(bin目录)也打包进行选择,一般情况下,第一次部署需要把启停脚本目录bin目录也打包出来,后续更新部署时只需要打包更新自主类库和主文件包即可。
在本申请的一个具体实例中,上述选择模块501,能够对是否把maven构建工具依赖的如图3所示的第三方类库(lib目录文件)打包出来。选项作用和打包内容类似,一般在第一次部署时需要选择是否把第三方类库一起打包;后续更新部署时,没有用到新第三方类库时,可以选择不打包更新。
在本申请的一个具体实例中,上述选择模块501,能够根据本次打包之前的上一次打包过程是否执行过maven编译构建,以及当前项目的项目代码是否发生过变化,选择是否执行maven编译构建;若本次打包之前的上一次打包过程未执行过maven编译构建或者当前项目的项目代码发生过变化,则选择执行maven编译构建;若本次打包之前的上一次打包过程执行过maven编译构建并且当前项目的项目代码没有发生过变化,则选择不执行maven编译构建。
在本申请的一个具体实例中,上述选择模块501,在对是否执行maven编译构建进行选择时,默认为选择执行,选择执行后将自动调用当前配置maven变异构建工具命令进行编译、构建。
在本申请的一个具体实例中,上述选择模块501,根据本次打包需求对是否加密进行选择时,默认日常打包构建时选择不加密。
在本申请的一个具体实例中,上述选择模块501,根据本次打包需求对是否加密进行选择时,当需要正式构建部署、或是需要部署应用到外方服务器,需要对部署文件进行保护时,可以选择加密打包,选择加密打包后如图3所示的自主类库sys_lib和可执行主jar包都会进行混淆加密。
图5示出的编译构建执行模块502,用于若选择执行maven编译构建,则调用当前配置maven构建工具对需打包内容执行编译构建得到当前内容包。能够将现有技术中的maven构建工具根据当前项目的构建目录结构,以及混淆加密组件进行混淆加密的需求,增加了额外的配置项和设置项的maven构建工具,得到了当前配置maven编译构建工具,就能够使一般开发人员根据实际需求,一键项目全自动编译、构建、打包功能,还可以根据实际需要自定义增加或减少构建归集内容,非常灵活自主。
图5示出的加密执行模块503,用于若选择进行加密,则调用混淆加密组件对当前内容包的全部或者部分内容进行混淆加密得到当前加密内容包。能够保证避免泄露,保障公司源代码与技术知识产权的安全性。
在本申请的一个具体实施例中,加密执行模块503,引入xjar混淆加密组件对当前内容包中的全部或者部分内容进行加密,避免源码泄露以及被反编译。xjar混淆加密组件的加密方式拥有无代码侵入的、完全内存解密、支持jdk(Java软件开发工具包)所有内置加密方式、可选择加密的资源文件和动态生成Go启动器有效保护密码泄露等特性,从而能够有力的保障公司源码与技术知识产权的安全性。
在本申请的一个具体实例中,若当前打包文件的部署是为首次部署,其需打包内容包括主文件包(主jar包)、自主类库(sys_lib)、启停脚本目录(bin目录)以及第三方类库(lib目录),加密执行模块503只需要对当前内容包中包括主文件包(主jar包)和自主类库(sys_lib)的部分内容进行加密即可。
在本申请的一个具体实例中,若当前打包文件的部署不是首次部署,其需打包内容只包括主文件包(主jar包)以及自主类库(sys_lib),此时,加密执行模块503需要对当前内容包中包括主文件包(主jar包)和自主类库(sys_lib)的全部内容进行加密。
图5的归集执行模块504,调用归集插件根据当前项目的构建目录结构归集当前加密内容包或者当前内容包得到当前打包文件,优选的,调用归集插件Assembly,对maven编译构建结果进行归集打包。Assembly插件的主要作用是,允许用户将项目输出与它的依赖项、模块、站点文档、和其他文件一起组装成一个可分发的归档文件。可以自动按照指定的目录结构归集项目部署文件,使得打包构建过程与项目目录结构完全贴合,统一的构建、部署目录,对于实施、维护的标准化操作有很大的优势。
在本申请的一个具体实施例中,上述归集执行模块504能够,若选择加密,则调用归集插件根据当前项目的构建目录结构归集当前加密内容包得到当前打包文件;若选择不加密,则调用归集插件根据当前项目的构建目录结构归集当前内容包得到当前打包文件。
在本申请的一个具体实例中,上述归集执行模块504对主文件包(主jar包)、自主类库(sys_lib)、启停脚本目录(bin目录)以及第三方类库(lib目录)进行统一归集部署,便于实施、维护的标准化操作。
在本申请的一个具体实施例中,本申请的项目代码自动构建打包装置还包括,如图6的模块605所示的存储模块,用于将当前打包文件根据当前项目的打包文件目录路径进行存储。
打包工具提示打包成功后,进入到项目路径下package目录,即为打包归集好的相关文件,按需要拷贝上传部署即可完成工作。
图7示出了本申请一种项目代码自动构建打包系统的一个具体实施方式。
在图7示出的具体实施方式中,本申请项目代码自动构建打包系统集成有当前配置maven构建工具、混淆加密组件、归集插件以及前文方案中的项目代码自动构建打包装置;其中,当前配置maven构建工具为根据当前项目的构建目录结构,以及混淆加密组件进行混淆加密的需求,增加了额外的配置项和设置项的maven构建工具。
优选的,上述混淆加密组件为xjar加密组件,上述归集插件为assembly插件。
对maven构建工具的无缝集成,便于项目代码自动构建打包装置调用maven构建框架实现了自动的项目编译构建功能;对混淆加密组件的无缝集成,便于项目代码自动构建打包装置按需选择对构建资源进行混淆加密,实现了按需的加密保护,有力的保护源码不会被反编译以及外泄;对归集插件的无缝集成,可以便于项目代码自动构建打包装置调用归集插件,自动按照指定的目录结构归集项目部署文件,统一的归集目录结构、部署结构,都分有bin、lib、sys_lib和主应用程序jar文件,对于实施、维护的标准化操作有很大的优势。
在本申请的一个具体实施例中,本申请一种项目代码自动构建打包装置以及一种项目代码自动构建打包系统中各功能模块可直接在硬件中、在由处理器执行的软件模块中或在两者的组合中。
软件模块可驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可装卸盘、CD-ROM或此项技术中已知的任何其它形式的存储介质中。示范性存储介质耦合到处理器,使得处理器可从存储介质读取信息和向存储介质写入信息。
处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)、现场可编程门阵列(英文:Field Programmable Gate Array,简称:FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其任何组合等。通用处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如DSP与微处理器的组合、多个微处理器、结合DSP核心的一个或一个以上微处理器或任何其它此类配置。在替代方案中,存储介质可与处理器成一体式。处理器和存储介质可驻留在ASIC中。ASIC可驻留在用户终端中。在替代方案中,处理器和存储介质可作为离散组件驻留在用户终端中。
在本申请的另一个具体实施方式中,一种计算机可读存储介质,其存储有计算机指令,计算机指令被操作以执行前文所述方案中的一种项目代码自动构建打包方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上仅为本申请的实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (9)

1.一种项目代码自动构建打包方法,其特征在于,包括,
在项目代码构建过程中根据本次打包需求,对需打包内容、是否执行maven编译构建以及是否加密进行选择;
若选择执行所述maven编译构建,则调用当前配置maven构建工具对所述需打包内容执行编译构建得到当前内容包;
若选择进行加密,则调用混淆加密组件对所述当前内容包的全部或者部分内容进行混淆加密得到当前加密内容包;以及,
调用归集插件根据当前项目的构建目录结构归集所述当前加密内容包或者所述当前内容包得到当前打包文件;
其中,所述当前配置maven构建工具为根据所述当前项目的所述构建目录结构,以及所述混淆加密组件进行混淆加密的需求,增加了额外的配置项和设置项的maven构建工具。
2.根据权利要求1所述的项目代码自动构建打包方法,其特征在于,还包括,将所述当前打包文件根据所述当前项目的打包文件目录路径进行存储。
3.根据权利要求1所述的项目代码自动构建打包方法,其特征在于,所述在项目代码构建过程中根据本次打包需求,对需打包内容进行选择的过程包括,
根据对所述当前打包文件的部署是否为首次部署,对启停脚本目录以及第三方类库是否为需打包内容进行选择;
若对所述当前打包文件的部署是首次部署,则选择将所述启停脚本目录以及所述第三方类库作为所述需打包内容;
若对所述当前打包文件的部署不是首次部署,则选择不将所述启停脚本目录以及所述第三方类库作为所述需打包内容。
4.根据权利要求1所述的项目代码自动构建打包方法,其特征在于,所述在项目代码构建过程中根据本次打包需求,对是否执行maven编译构建进行选择的过程包括,
根据本次打包之前的上一次打包过程是否执行过所述maven编译构建,以及所述当前项目的项目代码是否发生过变化,选择是否执行所述maven编译构建;
若本次打包之前的上一次打包过程未执行过所述maven编译构建或者所述当前项目的项目代码发生过变化,则选择执行所述maven编译构建;
若本次打包之前的上一次打包过程执行过所述maven编译构建并且所述当前项目的所述项目代码没有发生过变化,则选择不执行所述maven编译构建。
5.根据权利要求1所述的项目代码自动构建打包方法,其特征在于,所述调用归集插件根据当前项目的构建目录结构归集所述当前加密内容包或者所述当前内容包得到当前打包文件的过程包括,
若选择加密,则调用归集插件根据当前项目的构建目录结构归集所述当前加密内容包得到所述当前打包文件;
若选择不加密,则调用归集插件根据所述当前项目的所述构建目录结构归集所述当前内容包得到所述当前打包文件。
6.一种项目代码自动构建打包装置,其特征在于,包括,
选择模块,用于在项目代码构建过程中根据本次打包需求,对需打包内容、是否执行maven编译构建以及是否加密进行选择;
编译构建执行模块,用于若选择执行所述maven编译构建,则调用当前配置maven构建工具对所述需打包内容执行编译构建得到当前内容包;
加密执行模块,用于若选择进行加密,则调用混淆加密组件对所述当前内容包的全部或者部分内容进行混淆加密得到当前加密内容包;以及,
归集执行模块,用于调用归集插件根据当前项目的构建目录结构归集所述当前加密内容包或者所述当前内容包得到当前打包文件;
其中,所述当前配置maven构建工具为根据所述当前项目的所述构建目录结构,以及所述混淆加密组件进行混淆加密的需求,增加了额外的配置项和设置项的maven构建工具。
7.根据权利要求6所述的项目代码自动构建打包装置,其特征在于,还包括,
存储模块,用于将所述当前打包文件根据所述当前项目的打包文件目录路径进行存储;
所述选择模块包括用户交互界面,所述用户交互界面上显示有所述需打包内容、所述是否执行maven编译构建以及所述是否加密的选项供用户操作选择。
8.一种项目代码自动构建打包系统,其特征在于,
集成有当前配置maven构建工具、混淆加密组件、归集插件以及如权利要求6或7所述的项目代码自动构建打包装置;
其中,所述当前配置maven构建工具为根据当前项目的构建目录结构,以及所述混淆加密组件进行混淆加密的需求,增加了额外的配置项和设置项的maven构建工具。
9.一种计算机可读存储介质,其存储计算机指令,其特征在于,所述计算机指令被操作以执行权利要求1—5任一项所述的项目代码自动构建打包方法。
CN202110612276.5A 2021-06-02 2021-06-02 一种项目代码自动构建打包方法、装置、系统及介质 Active CN113326481B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110612276.5A CN113326481B (zh) 2021-06-02 2021-06-02 一种项目代码自动构建打包方法、装置、系统及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110612276.5A CN113326481B (zh) 2021-06-02 2021-06-02 一种项目代码自动构建打包方法、装置、系统及介质

Publications (2)

Publication Number Publication Date
CN113326481A CN113326481A (zh) 2021-08-31
CN113326481B true CN113326481B (zh) 2023-07-14

Family

ID=77423103

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110612276.5A Active CN113326481B (zh) 2021-06-02 2021-06-02 一种项目代码自动构建打包方法、装置、系统及介质

Country Status (1)

Country Link
CN (1) CN113326481B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977209A (zh) * 2017-12-21 2018-05-01 郑州云海信息技术有限公司 一种自动化打包部署的web工具
CN109614771A (zh) * 2018-10-31 2019-04-12 同盾控股有限公司 一种基于Java代码的混淆方法和装置
CN110968357A (zh) * 2018-09-30 2020-04-07 北京国双科技有限公司 一种maven项目的打包方法、装置、存储介质及处理器
CN111290780A (zh) * 2020-03-10 2020-06-16 广州易方信息科技股份有限公司 一种自动化上传SDK到maven仓库的方法
CN111611008A (zh) * 2020-05-22 2020-09-01 浪潮电子信息产业股份有限公司 一种软件代码打包部署方法、装置、设备及存储介质
CN111813438A (zh) * 2020-07-16 2020-10-23 成都安恒信息技术有限公司 一种基于JavaScript的跨平台应用打包方法
CN112417380A (zh) * 2020-11-24 2021-02-26 广州华资软件技术有限公司 一种基于编译技术的Licence管理系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3188063A1 (en) * 2015-12-29 2017-07-05 GuardSquare NV A build system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977209A (zh) * 2017-12-21 2018-05-01 郑州云海信息技术有限公司 一种自动化打包部署的web工具
CN110968357A (zh) * 2018-09-30 2020-04-07 北京国双科技有限公司 一种maven项目的打包方法、装置、存储介质及处理器
CN109614771A (zh) * 2018-10-31 2019-04-12 同盾控股有限公司 一种基于Java代码的混淆方法和装置
CN111290780A (zh) * 2020-03-10 2020-06-16 广州易方信息科技股份有限公司 一种自动化上传SDK到maven仓库的方法
CN111611008A (zh) * 2020-05-22 2020-09-01 浪潮电子信息产业股份有限公司 一种软件代码打包部署方法、装置、设备及存储介质
CN111813438A (zh) * 2020-07-16 2020-10-23 成都安恒信息技术有限公司 一种基于JavaScript的跨平台应用打包方法
CN112417380A (zh) * 2020-11-24 2021-02-26 广州华资软件技术有限公司 一种基于编译技术的Licence管理系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Java编译器的Maven混淆插件的设计与实现;傅晓巍;;电脑知识与技术;14(10);第65-67、70页 *

Also Published As

Publication number Publication date
CN113326481A (zh) 2021-08-31

Similar Documents

Publication Publication Date Title
US11442746B2 (en) Dynamically loaded plugin architecture
US11354144B2 (en) Java native interface and windows universal app hooking
US9703551B2 (en) Modifying mobile application binaries to call external libraries
WO2018032653A1 (zh) 一种Java卡应用的功能实现方法及装置
CN103713902B (zh) 一种基于Android系统的BOA编译方法和系统
CN110580154A (zh) 基于h5接入方式的接入方法及其接入组件和移动终端
CN110727440A (zh) 一种软件封装方法
CN112835584B (zh) 基于ReactNative实现组件扩展和管理的方法
CN114371850A (zh) 项目构建编译和代码开发的管理方法
US9032359B1 (en) Method and apparatus for modifying a platform-independent programming language build tool
CN113326481B (zh) 一种项目代码自动构建打包方法、装置、系统及介质
CN111813460A (zh) 一种应用程序配套文件的存取方法、装置、设备及存储介质
CN111290740A (zh) 应用程序的开发方法、装置、计算机设备和存储介质
CN113168320A (zh) 用类选择性替换遗留加载模块程序以在java虚拟机中执行
Kaegi et al. Modular java web applications
Bueno et al. Quarkus Cookbook
CN111752548A (zh) 一种sdk嵌入方法及装置、计算机可读存储介质
Debbabi et al. Embedded Java security: security for mobile devices
CN113986207A (zh) 一种软件架构生成、调用方法及装置
Mouheb et al. An aspect-oriented approach for software security hardening: From design to implementation
Chiaramida Reliability Issues among Android Components: Analysis, Testing and Solutions
CN115114610A (zh) 一种基于安卓系统通过Root调用服务的模块及方法
CN116974555A (zh) 软件开发工具包的组装方法、装置、设备以及存储介质
CN115757173A (zh) 一种高兼容性区块链sdk测试方法、系统及存储介质
Lagemann et al. Csharpsimplemodule: writing omnet++ modules with c# and mono

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