背景

开发Java项目,经常会有一些公共的代码逻辑,如:常量定义,通用的枚举,模型,方法。如果每个微服都拷贝一份,重复代码会越来越多。

我们通常的做法是把些公共的代码逻辑抽取出来,放一个新的Common工程维护,编译成jar包推送到Maven仓库。其它微服通过配置pom文件,拉取公共的Common包使用。

在抽取Common模块后,开发中会有两个问题:

  1. 开发阶段修改了Common模块代码,微服务如何调试。
  2. 修改Common模块后各微服务如何及时获取最新的版本。

下面说一下这两种问题的处理方式。

在IDEA中设置模块依赖

修改了Common项目代码,正常的逻辑是需要打包上传后微服务再拉取Jar包使用。但,这样操作需要频繁构建Common项目, 微服务也需要频繁修改pom文件。 实际上,我们可以在本地依赖Common模块开发,联调测试充分了再上传。

IDEA提供了模块依赖设置:

  1. 进入project structure界面
    在这里插入图片描述

  2. 导入依赖的Common组件代码
    在这里插入图片描述
    选择Import Module, 选中Common模块的代码目录将Common模块的代码加进来了。

  3. 设置依赖的模块

在这里插入图片描述
按图中标注的4步操作设置微服务依赖的Common模块,设置后就可以在微服务中直接使用Common中定义的接口了。注意:如果微服务的pom文件有依赖Common的历史版本,先把这部分注释掉,避免使用老版本的jar包。

使用SNAPSHOT版本

Common模块的代码是通用的,在开发中可能会加接口,改逻辑。如果是Release版本,Common模块推送了一个新版本的Jar包,各微服需要修改pom文件才能获取到最新版本的Jar包。

在微服比较多的情况下,这个操作是很麻烦的。而且不同的微服务还是不同的人负责。所以,在开发阶段可以使用SNAPSHOT版本号,这样可以让各微服及时拉取到最新的common包使用,新版本代码有问题也能及时发现,也不用频繁修改微服务的pom文件。

上面是开发阶段的处理,版本转测试或者发生产环境是需要用Release版本的,需要跟踪每个版本修改了什么内容。

每个微服务需要设置一下,勾选"Always update snapshots ", 强制更新SNAPSHOT包,否则本地已经有了旧的包就拿不到最新的了。
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐