美文网首页工作生活
一个关于jar包管理的疑问

一个关于jar包管理的疑问

作者: 阿菜的博客 | 来源:发表于2019-07-04 22:04 被阅读0次
jar 包管理

最近遇到一个关于 jar 包管理的疑问。记录下,说不定哪天遇到最佳实践。


有一个工程 X,对应一个 jar 包,用于做接口定义,当前版本为 1.0.0

佳佳、包包两人,分别要在工程 X 中定义新方法 A 和 B。

并且在项目 P 中实现方法。

佳佳定义了新的方法 A,将 jar 包版本升级到 1.0.1-SNAPSHOT,deploy 到仓库。

包包也定义了新的方法 B,也将 jar 包版本升级到 1.0.1-SNAPSHOT,deploy 到了仓库。

佳佳在某次重启的时候,发现 IDE 提示没有实现方法 B。


于是,佳佳和包包准备协商一种 jar 包管理的方法。

考虑以下几点:

  1. 两人不能共用一个版本的 jar 包。佳佳的程序只需要关注方法 A,而不可能实现包包需要实现的 method B。

  2. 考虑到两人的代码将在开发环境共存一段时间,又需要将两人的方法定义统一在一个 jar 包内,部署到仓库,供开发环境的项目 P 使用。

  3. 考虑到上线顺序不定,不能随意将 jar 包升级到某个正式版。


暂时想到可行的办法:

  • 在本地,大家有自个的环境。不需要考虑代码层面的冲突,只需要关注 jar 包 SNAPSHOT 版本是否冲突。因为 SNAPSHOT 是可变的。当前包版本为 1.0.0 时,佳佳打包版本为 1.0.1.jiajia-SNAPSHOT;包包则打包为 1.0.1.baobao-SNAPSHOT。

  • 涉及到联调和实现,可直接当该 jar 包提供给使用方。因为佳佳的联调方只需关注 1.0.1.jiajia-SNAPSHOT 中提供的方法 A。

  • 佳佳首先在项目 P 中实现了方法 A ,并将代码推到开发 dev 分支,引用的 jar 包版本为 1.0.1.jiajia-SNAPSHOT。

  • 包包在项目 P 中引用 1.0.1.jiajia-SNAPSHOT,当需要将项目 P 的代码推到 dev 分支时,发现冲突。从 jar 包版本得知,佳佳也在同时开发。

  • 此时,包包在工程 X 中新建解决冲突分支,解决冲突,新打一个包为 1.0.1.conflict-SNAPSHOT,并在项目 P 中引用该包。顺利部署到开发环境。

  • 涉及到冲突解决,两人在工程 X 中定义完新方法后,需要将对应的分支推到主仓库让对方看到。并使用明显的分支名称,方便对方解决冲突

  • 需要上线时候,假设包包先上线。拉取工程 X master 分支的代码,防止佳佳已经上线,得知最新版本没变,则在工程 X 中打包 1.0.1,项目 P 引用 1.0.1 顺利上线。并将代码合并到工程 X 的 master 分支。

  • 佳佳上线时,首先拉取工程 X 的 master 分支,发现1.0.1被占用,则使用最新版本1.0.2。

相关文章

  • 一个关于jar包管理的疑问

    最近遇到一个关于 jar 包管理的疑问。记录下,说不定哪天遇到最佳实践。 有一个工程 X,对应一个 jar 包,用...

  • idea创建sprignMVC+MyBatis的项目

    需要引入的jar包 idea引入jar 因为没有用maven管理所以只能手动导入jar包 第一步: 将jar包复制...

  • maven

    maven 管理jar包的工具,可以管理依赖也可以把自己的软件打成jar包提供他人。编译、测试、打包。maven的...

  • 命令行生成可执行的jar包

    jar包 jar包分类 jar包分为可执行jar包和不可执行jar包jar包解压后都有一个META-INF/MAN...

  • Maven基础

    Maven介绍 可以管理项目jar包的构建,解决jar包之间的冲突;可以对项目进行管理,比如项目打包等,maven...

  • java引入第三方jar包

    springboot 开发中,采用的是 gradle 来管理构建项目。 在使用一个第三包jar包时,发现该jar无...

  • Maven Dependency 查找java重复类

    maven 是常用的jar包管理工具之一。在引入的jar包多了之后往往会有同一个jar包的不同版本都被引入的情况,...

  • [Gradle中文教程系列]-跟我学Gradle-5.1:依赖-

    上一篇:关于依赖管理 依赖的坐标 仓库中构件(jar包)的坐标是由configurationName "group...

  • Maven 基础标签之版本管理和冲突解决

    前言 我们在做java项目的时候由于jar包太多,我们就需要使用maven做项目管理,管理项目的jar包依赖,包括...

  • Maven 依赖管理

    管理包依赖是 Maven 核心功能之一,下面通过如何引入 jar 包;如何解析 jar 包依赖;包冲突是如何产生;...

网友评论

    本文标题:一个关于jar包管理的疑问

    本文链接:https://www.haomeiwen.com/subject/qxudhctx.html