背景

开发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包,否则本地已经有了旧的包就拿不到最新的了。

在IDEA中设置依赖调用公共模块代码相关推荐

  1. python导入json模块_Python调用json模块代码实例

    本篇文章小编给大家分享一下Python调用json模块代码实例,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. Json是JavaScript Object Notation ...

  2. 【Android】Android中使用JNI调用底层C++代码

    Android NDK是一系列工具的集合.帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.NDK集成了交叉编译器,并提供了相应的mk文件隔离平台.CPU.API ...

  3. Spring 中设置依赖注入

    package com.ysq.vo; public class User {private int uid;private String uname;private String pwd; priv ...

  4. 如何在Mirth Connect中创建和调用自定义Java代码

    0-前言 本文章将向您展示如何创建自定义Java类,将其编译/打包到JAR中,将其包含在Mirth Connect在,并在JavaScript中调用它,您可以从任何JavaScript上下文调用自定义 ...

  5. vscode php断点,VSCode中设置断点调试PHP(示例代码)

    所需文件 xampp 集成服务器(本文使用Apache2.4+MySQL+PHP7.4.3) vscode Xdebug php-debug 插件 配置Xdebug 1. 下载Xdebug插件 (直接 ...

  6. 在IDEA中使用MCR调用运行matlab代码

    安装MCR 注意:MCR需要与打包matlab程序的matllab版本一致.(本次开发使用Matlab R2020b版本) 在Matlab Runtime官网地址下载R2020b的安装包. 解压安装包 ...

  7. matlab中暂停的快捷键,如何设置“暂停调用”和“强制调用”快捷键

    Internet Download Manager(简称IDM)的默认最大连接数为8(即下载时最大线程数为8线程),小编在之前的文章中已经为大家讲解过如何如何修改最大连接数.通常它的连接数设置都为多线 ...

  8. 超码、候选码、主码(主键)、主属性、非主属性、关系数据库中的依赖、关系数据库范式、反范式

    超码:可以区分记录的一个属性或多个属性的集合. 候选码:超码的最小集,即包含最少属性的超码.超码的最小集可以有多个,即多个集合大小相同,但元素构成不完全相同的最小集. 主码(主键):被选中的一个候选码 ...

  9. Spire.Presentation使用教程:在Java中设置PowerPoint图像的透明度

    Spire.Presentation for Java专业的 PowerPoint API,它允许开发人员在 Java 应用程序中创建.读取.写入.转换和保存 PowerPoint 文档,而无需安装 ...

最新文章

  1. VS2019 无法解析的外部符号 cublasSgemm_v2
  2. Imagination 推新款GPU IP,首次实现桌面级光线追踪效果
  3. 字节数组输入流读取操作
  4. Netty详解(五):Netty TCP粘包 拆包
  5. WINCE下SOS驱动开发
  6. 机器学习笔记(十三):降维
  7. 11 个非常受欢迎的 JavaScript 动画库
  8. 运用Unity实现AOP拦截器[结合异常记录实例]
  9. 智慧安防体系包括哪些智能化设备?
  10. matlab各种文件类型,MATLAB中的文件类型总结
  11. 模拟电子技术,电力电子技术
  12. 雷达、信号处理方向的理解
  13. Unity 中从3D到Universal RP配置方法
  14. 推荐一款平台聚合音乐播放器:Listen 1
  15. adb shell网络命令nestat、ping、netcfg、ip操作实例解释
  16. vue之表格数据渲染,实现点击表格某列按钮弹出框显示剩余数据(模态框知识点)
  17. 【计算机毕业设计】188校园商铺管理系统设计与实现
  18. c语言步进电机驱动程序不正常怎么办,步进电机【C语言驱动程序】
  19. KubernetesDatabase-k8s中helm方式安装postgresql及pgadmin
  20. Python 自学,从入门到

热门文章

  1. 测一测你是不是险盲?
  2. iPhone键盘配置
  3. python全栈工程师完整版视频教程
  4. Python全栈路线,学习方法,资源推荐
  5. symfony入门学习资料之十:YAML——基本语法
  6. 小程序图片拉伸缩放一闪而过bug
  7. 编程中国-中国最大的编程网站 %D%A [推荐编程网站]
  8. activity监听器使用
  9. Android 编译 Rom 刷机
  10. 如何提高游戏陪玩app源码的代码可读性?