CN117573562A - 一种对比pom文件不同版本的方法 - Google Patents

一种对比pom文件不同版本的方法 Download PDF

Info

Publication number
CN117573562A
CN117573562A CN202410054118.6A CN202410054118A CN117573562A CN 117573562 A CN117573562 A CN 117573562A CN 202410054118 A CN202410054118 A CN 202410054118A CN 117573562 A CN117573562 A CN 117573562A
Authority
CN
China
Prior art keywords
data
file
version number
dependent
dependency
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
CN202410054118.6A
Other languages
English (en)
Other versions
CN117573562B (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.)
Yunzhu Information Technology Chengdu Co ltd
Original Assignee
Yunzhu Information Technology Chengdu 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 Yunzhu Information Technology Chengdu Co ltd filed Critical Yunzhu Information Technology Chengdu Co ltd
Priority to CN202410054118.6A priority Critical patent/CN117573562B/zh
Publication of CN117573562A publication Critical patent/CN117573562A/zh
Application granted granted Critical
Publication of CN117573562B publication Critical patent/CN117573562B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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 Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种对比pom文件不同版本的方法,包括提取pom文件的每个节点,截取并记录每个节点的数据,得到一个文件集合;对文件集合内的数据进行解析,将解析出的数据加载到依赖列表中;循环遍历并解析依赖列表中的数据,得到依赖数据,添加一个数组,将依赖数据写入数组中;循环遍历数组,将数组中的依赖数据写入第一文件中;第一文件得到依赖数据,基于Nexus私库的域名对依赖数据进行处理,得到依赖数据在Nexus私库中的最大版本号,将依赖数据的依赖版本号与最大版本号进行比较。本发明可实时知晓当前项目所使用的依赖是否需要进行升级操作,从而降低由于外部因素带来的项目风险。

Description

一种对比pom文件不同版本的方法
技术领域
本发明涉及计算机测试技术领域,具体涉及一种对比pom文件不同版本的方法。
背景技术
pom文件是Maven项目的核心文件之一,它是一个xml文件,描述了项目的基本信息、依赖项、构建和发布等信息。pom文件中所指定的依赖包通常需要从互联网中获取,但是直接从互联网中获取会受到很多因素的影响,进而降低Maven项目的构建速度。所以一般来说,在公司内网搭建一套Nexus私库来存储这些依赖包,Maven项目构建就会从内网Nexus私库中拉取所需要的依赖包,从而大大减少构建所需要的时间。
公司中存在很多业务线,业务会依赖基础服务所提供的jar软件包,但是jar软件包会同时存在多个版本,业务在不知情的情况下随便使用了一个版本的jar软件包,如果该版本的jar软件包存在缺陷,那就会导致整个业务出现故障,从而影响公司业务进展。并且在Nexus私库每一次版本构建时,可能都会有依赖包的版本升级或降级带来的一系列未知风险。
发明内容
本发明要解决的技术问题是:提供一种对比pom文件不同版本的方法,以至少解决上述部分技术问题。
为实现上述目的,本发明采用的技术方案如下:
一种对比pom文件不同版本的方法,包括以下步骤:
步骤1、提取传入的pom文件的每个节点,截取并记录每个节点的数据,得到一个文件集合;对文件集合内的数据进行解析,将解析出的数据加载到依赖列表中;
步骤2、循环遍历并解析依赖列表中的数据,得到依赖数据,添加一个数组,将依赖数据写入数组中;
步骤3、循环遍历数组,将数组中的依赖数据写入第一文件中;
步骤4、读取第一文件得到依赖数据,基于Nexus私库的域名对依赖数据进行处理,得到依赖数据在Nexus私库中的最大版本号,将依赖数据的依赖版本号与最大版本号进行比较。
进一步地,在步骤1中,将pom文件的每个节点提取出来,以字符串的形式截取每一个节点的数据,以节点的元素名加上元素值的形式记录截取出的数据。
进一步地,在步骤1中,解析出元素名为依赖的数据,将此数据加载到依赖列表中。
进一步地,在步骤2中,循环遍历依赖列表中的数据,对每个数据进行解析,得到关键词为包结构、项目名和版本号的数据,将关键词为包结构、项目名和版本的数据合并为一条依赖数据。
进一步地,步骤4包括:步骤41、读取第一文件得到依赖数据;步骤42、将Nexus私库的域名与每条依赖数据进行拼接,得匹配出所有的版本号到Nexus私库中当前依赖数据的访问地址;步骤43、在访问地址中删除关键词为版本号的数据,得到Nexus私库中当前依赖数据不带有版本号的访问地址;步骤44、将不带有版本号的访问地址与关键词为版本号的数据通过键值对的形式组合成为一个新的对象;步骤45、访问不带有版本号的访问地址,得到当前依赖数据的信息;步骤46、遍历并解析当前依赖数据的信息,匹配出所有的版本号,对所有的版本号进行排序,得到当前依赖数据在Nexus私库中的最大版本号;步骤47、由关键词为版本号的数据得到当前依赖数据的依赖版本号,将依赖版本号与Nexus私库中的最大版本号进行对比,并将比较结果写入第二文件中。
进一步地,在步骤41中,从第一文件中读取出的依赖数据以列表形式呈现,遍历循环列表依次得到每条依赖数据。
进一步地,在步骤45中,访问不带有版本号的访问地址,得到一个字符串数据,再通过正则表达式匹配得到当前依赖数据的信息,当前依赖数据的信息以列表的形式呈现。
进一步地,在步骤46中,遍历列表的数据,使用正则表达式匹配出所有的版本号。
进一步地,还包括将第二文件发送至相关人员。进一步地,还包括将第二文件发送至相关人员。
与现有技术相比,本发明具有以下有益效果:
本发明通过对pom文件依赖版本与其在Nexus私库中的最大版本进行对比,可实时知晓当前项目所使用的依赖是否需要进行升级操作,从而降低由于外部因素带来的项目风险。
附图说明
图1为本发明流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进一步详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
术语解释:
pom文件:是Maven项目的核心文件之一,它是一个xml文件,描述了项目的基本信息、依赖项、构建和发布等信息。
Maven项目:是一个项目管理工具,它包含了一个对象模型。
Nexus私库:是一个Maven仓库管理器。
jar:是一种软件包文件格式。
xml.dom.minidom:是python内置xml库中的一种解析方法。
xml数据库:是一种支持对xml格式文档进行存储和查询等操作的数据管理系统。
readlines:是python内置的文件读取方法之一。
Requests:是python内置的发送HTTP请求方法。
如图1所示,本发明提供的一种对比pom文件不同版本的方法,包括以下步骤:
步骤1、提取传入的pom文件的每个节点,截取并记录每个节点的数据,得到一个文件集合;对文件集合内的数据进行解析,将解析出的数据加载到依赖列表中;
步骤2、循环遍历并解析依赖列表中的数据,得到依赖数据,添加一个数组,将依赖数据写入数组中;
步骤3、循环遍历数组,将数组中的依赖数据写入第一文件中;
步骤4、读取第一文件得到依赖数据,基于Nexus私库的域名对依赖数据进行处理,得到依赖数据在Nexus私库中的最大版本号,将依赖数据的依赖版本号与最大版本号进行比较。
在具体实施例中,使用python内置xml数据库中的xml.dom.minidom提取传入的pom文件的每个节点,pom文件是一个xml文件,而xml文件又是一个由多节点组成的文件,每个节点都有一个具体的元素名做标记,每个节点在xml文件中以一行的形式存在;将pom文件的每个节点每一行的数据提取出来,以字符串的形式截取每一个节点的数据,以节点的元素名加上元素值("元素名":"元素值")的形式记录截取出的数据,通过以上方法,得到包含各元素以及各元素名所定义值的文件集合。再对文件集合内的数据进行解析,将解析出的数据加载到依赖列表中,具体解析的方法为:使用xml库中内置方法获取元素名为依赖的数据,将得到的所有数据依次通过数据结构为对象的形式加载到依赖列表中,依赖列表中的数据是以"元素名":"元素值"的形式存在。
然后循环遍历得到的依赖列表,依次得到依赖列表中的每个数据。再对每个数据进行解析,具体解析的方法为:根据关键词包结构(groupId)、项目名(artifactId)和版本号(version),依次得到关键词为包结构(groupId)、项目名(artifactId)和版本号(version)的数据;将关键词为包结构(groupId)、项目名(artifactId)和版本号(version)的数据合并为一条依赖数据,依赖数据为”groupId”+”artifactId”+”version”的数据;添加一个数组catalogueList,将依赖数据写入数组中。
之后创建一个第一文件,循环遍历数组,将数组中的依赖数据写入第一文件中。
最后通过python内置方法readlines读取第一文件,此方法会将结果以列表的形式呈现,遍历循环该列表依次得到每条数据并依次将每条数据做如下处理:将Nexus私库的域名与每条依赖数据进行拼接,得到Nexus私库中当前依赖数据的访问地址,例如Nexus私库的域名为http://nexus.rep.cn/service/rest/respository/browse/qa-public,包结构为cn/alibaba/arthas,项目名为arthas-repackage-deps,版本号为1.0.0-SNAPSHOT,则组合起来的访问地址为http://nexus.rep.cn/service/rest/respository/browse/qa-public/cn/alibaba/arthas/arthas-repackage-deps/1.0.0-SNAPSHOT;在访问地址中删除关键词为版本号(version)的数据,得到Nexus私库中当前依赖数据不带有版本号的访问地址;将不带有版本号的访问地址与关键词为版本号(1.0.0-SNAPSHOT)的数据通过键值对(key:value)的形式组合成为一个新的对象,由于关键词为版本号(1.0.0-SNAPSHOT)的数据是一个字符串,将字符串转换成对象,使整个方案在执行过程中的数据处理方面更加的清晰,并且使用对象的方式,可以通过键(key)的方式得到值(value),也就是可以使用不带版本号的访问地址去获取版本号,而不是重新解析字符串获得版本号;通过python内置requests方法,访问不带有版本号的访问地址,得到一个字符串数据,再通过正则表达式匹配得到当前依赖数据的信息,当前依赖数据的信息以列表的形式呈现;遍历列表的数据,使用正则表达式匹配出所有的版本号;对所有的版本号进行排序,得到当前依赖数据在Nexus私库中的最大版本号;由关键词为版本号的数据得到当前依赖数据的依赖版本号,将依赖版本号与Nexus私库中的最大版本号进行对比,并将比较结果写入第二文件中。
作为优选,还包括将第二文件发送至相关人员。以便相关人员及时了解对比结果。采用具有传输的软件进行第二文件的发送,包括钉钉等。
作为优选,从第一文件中读取出的依赖数据以列表形式呈现,遍历循环列表依次得到每条依赖数据。
作为优选,采用降序或升序对所有的版本号进行排序,以快速得到最大版本号。
最后应说明的是:以上各实施例仅仅为本发明的较优实施例用以说明本发明的技术方案,而非对其限制,当然更不是限制本发明的专利范围;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围;也就是说,但凡在本发明的主体设计思想和精神上作出的毫无实质意义的改动或润色,其所解决的技术问题仍然与本发明一致的,均应当包含在本发明的保护范围之内;另外,将本发明的技术方案直接或间接的运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (9)

1.一种对比pom文件不同版本的方法,其特征在于,包括以下步骤:
步骤1、提取传入的pom文件的每个节点,截取并记录每个节点的数据,得到一个文件集合;对文件集合内的数据进行解析,将解析出的数据加载到依赖列表中;
步骤2、循环遍历并解析依赖列表中的数据,得到依赖数据,添加一个数组,将依赖数据写入数组中;
步骤3、循环遍历数组,将数组中的依赖数据写入第一文件中;
步骤4、读取第一文件得到依赖数据,基于Nexus私库的域名对依赖数据进行处理,得到依赖数据在Nexus私库中的最大版本号,将依赖数据的依赖版本号与最大版本号进行比较。
2.根据权利要求1所述的一种对比pom文件不同版本的方法,其特征在于,在步骤1中,将pom文件的每个节点提取出来,以字符串的形式截取每一个节点的数据,以节点的元素名加上元素值的形式记录截取出的数据。
3.根据权利要求2所述的一种对比pom文件不同版本的方法,其特征在于,在步骤1中,解析出元素名为依赖的数据,将此数据加载到依赖列表中。
4.根据权利要求1所述的一种对比pom文件不同版本的方法,其特征在于,在步骤2中,循环遍历依赖列表中的数据,对每个数据进行解析,得到关键词为包结构、项目名和版本号的数据,将关键词为包结构、项目名和版本的数据合并为一条依赖数据。
5.根据权利要求4所述的一种对比pom文件不同版本的方法,其特征在于,步骤4包括:步骤41、读取第一文件得到依赖数据;步骤42、将Nexus私库的域名与每条依赖数据进行拼接,得匹配出所有的版本号到Nexus私库中当前依赖数据的访问地址;步骤43、在访问地址中删除关键词为版本号的数据,得到Nexus私库中当前依赖数据不带有版本号的访问地址;步骤44、将不带有版本号的访问地址与关键词为版本号的数据通过键值对的形式组合成为一个新的对象;步骤45、访问不带有版本号的访问地址,得到当前依赖数据的信息;步骤46、遍历并解析当前依赖数据的信息,匹配出所有的版本号,对所有的版本号进行排序,得到当前依赖数据在Nexus私库中的最大版本号;步骤47、由关键词为版本号的数据得到当前依赖数据的依赖版本号,将依赖版本号与Nexus私库中的最大版本号进行对比,并将比较结果写入第二文件中。
6.根据权利要求5所述的一种对比pom文件不同版本的方法,其特征在于,在步骤41中,从第一文件中读取出的依赖数据以列表形式呈现,遍历循环列表依次得到每条依赖数据。
7.根据权利要求5所述的一种对比pom文件不同版本的方法,其特征在于,在步骤45中,访问不带有版本号的访问地址,得到一个字符串数据,再通过正则表达式匹配得到当前依赖数据的信息,当前依赖数据的信息以列表的形式呈现。
8.根据权利要求7所述的一种对比pom文件不同版本的方法,其特征在于,在步骤46中,遍历列表的数据,使用正则表达式匹配出所有的版本号。
9.根据权利要求5所述的一种对比pom文件不同版本的方法,其特征在于,还包括将第二文件发送至相关人员。
CN202410054118.6A 2024-01-15 2024-01-15 一种对比pom文件不同版本的方法 Active CN117573562B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410054118.6A CN117573562B (zh) 2024-01-15 2024-01-15 一种对比pom文件不同版本的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410054118.6A CN117573562B (zh) 2024-01-15 2024-01-15 一种对比pom文件不同版本的方法

Publications (2)

Publication Number Publication Date
CN117573562A true CN117573562A (zh) 2024-02-20
CN117573562B CN117573562B (zh) 2024-05-28

Family

ID=89864703

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410054118.6A Active CN117573562B (zh) 2024-01-15 2024-01-15 一种对比pom文件不同版本的方法

Country Status (1)

Country Link
CN (1) CN117573562B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111783103A (zh) * 2020-07-03 2020-10-16 Oppo广东移动通信有限公司 基于Maven的依赖管理方法、装置、电子装置及存储介质
CN112799937A (zh) * 2021-01-13 2021-05-14 东北大学 基于GitHub自动化检测Maven项目中依赖冲突问题的方法
CN112835584A (zh) * 2021-01-13 2021-05-25 普元信息技术股份有限公司 基于ReactNative实现组件扩展和管理的方法
CN115185535A (zh) * 2022-07-20 2022-10-14 中国银行股份有限公司 依赖关系显示方法及装置、存储介质及电子设备
CN115202669A (zh) * 2022-08-04 2022-10-18 深圳市远行科技股份有限公司 一种基于配置文件的项目构建方法、系统及相关设备
US20230025526A1 (en) * 2021-07-23 2023-01-26 Red Hat, Inc. Patching software dependencies using external metadata
CN116541307A (zh) * 2023-06-29 2023-08-04 云筑信息科技(成都)有限公司 一种对比pom版本的数据处理方法
CN116820477A (zh) * 2023-06-13 2023-09-29 中国银行股份有限公司 一种依赖管理方法、装置、电子设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111783103A (zh) * 2020-07-03 2020-10-16 Oppo广东移动通信有限公司 基于Maven的依赖管理方法、装置、电子装置及存储介质
CN112799937A (zh) * 2021-01-13 2021-05-14 东北大学 基于GitHub自动化检测Maven项目中依赖冲突问题的方法
CN112835584A (zh) * 2021-01-13 2021-05-25 普元信息技术股份有限公司 基于ReactNative实现组件扩展和管理的方法
US20230025526A1 (en) * 2021-07-23 2023-01-26 Red Hat, Inc. Patching software dependencies using external metadata
CN115185535A (zh) * 2022-07-20 2022-10-14 中国银行股份有限公司 依赖关系显示方法及装置、存储介质及电子设备
CN115202669A (zh) * 2022-08-04 2022-10-18 深圳市远行科技股份有限公司 一种基于配置文件的项目构建方法、系统及相关设备
CN116820477A (zh) * 2023-06-13 2023-09-29 中国银行股份有限公司 一种依赖管理方法、装置、电子设备及存储介质
CN116541307A (zh) * 2023-06-29 2023-08-04 云筑信息科技(成都)有限公司 一种对比pom版本的数据处理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
宇宙超级无敌程序媛: ""Maven —— 项目依赖版本号管理(pom文件的进阶使用之bom)"", pages 1 - 2, Retrieved from the Internet <URL:《https://blog.csdn.net/xue_xiaofei/article/details/118037269》> *
邓志强 等: ""Maven在Java项目开发中的应用"", 《电子元器件与信息技术》, 20 May 2019 (2019-05-20), pages 1 - 4 *

Also Published As

Publication number Publication date
CN117573562B (zh) 2024-05-28

Similar Documents

Publication Publication Date Title
US9633010B2 (en) Converting data into natural language form
US6832220B1 (en) Method and apparatus for file searching, accessing file identifiers from reference page
US6728720B1 (en) Identifying preferred indexes for databases
US8335779B2 (en) Method and apparatus for gathering, categorizing and parameterizing data
US20030088643A1 (en) Method and computer system for isolating and interrelating components of an application
US8712990B2 (en) Methods and systems for providing a business repository
JP2007122732A (ja) ウェブドキュメントの集合において効率的に日付を検索する方法、コンピュータプログラム、およびサービス方法(ウェブドキュメントの集合において効率的に日付を検索するシステムおよび方法)
US20100094822A1 (en) System and method for determining a file save location
WO2009100081A1 (en) System and method for utilizing advanced search and highlighting techniques for isolating subsets of relevant data
US20140136515A1 (en) Method and system for managing database
US20130159828A1 (en) Method and Apparatus for Building Sales Tools by Mining Data from Websites
CN108287901A (zh) 用于生成信息的方法和装置
US20060215298A1 (en) Information presentation apparatus, and information presentation method and program for use therein
US8655876B2 (en) Methods and systems for classifying data based on entities related to the data
US20120254166A1 (en) Signature Detection in E-Mails
US20100205175A1 (en) Cap-sensitive text search for documents
CN117573562B (zh) 一种对比pom文件不同版本的方法
US9563711B2 (en) Automated surfacing of tagged content in vertical applications
US10699242B2 (en) Automated surfacing of tagged content adjunct to vertical applications
CN116186116A (zh) 一种基于等保测评的资产问题分析方法
US20080162165A1 (en) Method and system for analyzing non-patent references in a set of patents
US9667741B1 (en) System and method to anonymize data transmitted to a destination computing device
JP2011086156A (ja) 漏洩情報追跡システムおよび漏洩情報追跡プログラム
KR20020043993A (ko) 패턴정보를 이용한 상품정보 추출 장치 및 방법
US20070061276A1 (en) Device and method for registering a plurality of types of information

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