返回顶部
首页 > 资讯 > 数据库 >pom管理规范
  • 884
分享到

pom管理规范

java开发语言pom管理 2023-10-07 13:10:34 884人浏览 安东尼
摘要

0. 引言 在单机架构下,我们只需要将我们的依赖在pom中引入。但是过渡到微服务架构后,会涉及到多模块引用相同的依赖,多模版之间依赖的版本太过分散难以管理的问题。 这就需要我们利用Maven中依赖传递的特性,结合dependencyMana

0. 引言
在单机架构下,我们只需要将我们的依赖在pom中引入。但是过渡到微服务架构后,会涉及到多模块引用相同的依赖,多模版之间依赖的版本太过分散难以管理的问题。

这就需要我们利用Maven中依赖传递的特性,结合dependencyManagement标签来做好依赖的版本管理。下面我们就通过具体的案例来向大家演示如何在微服务架构中做好pom的管理规范。

在父项目中实现版本管理
我们介绍的第一种版本管理的方案,就是在父项目中声明版本。

我们先来看我们的案例:

有一个微服务架构,包含商品模块product,订单模块order,网关模块gateway,还有一个公用模块commons。
其中商品模块、订单模块都需要引入Nacosspring WEB、seata、mybatis-plus、swaggerMysql、lombok依赖
订单模块中除了上述所说的依赖,还需要引入dynamic-datasource、openfeign依赖
网关模块需要引入nacos discovery、gateway、Jwt、swagger、lombok依赖

1 在父项目中声明依赖版本
​​以下配置在父项目pom.xml中操作​​ 首先我们先将所需要的依赖的版本号定义为属性


        1.8
        3.8.1
        UTF-8
        UTF-8
        2.3.7.RELEASE
        2.2.2.RELEASE
        1.4.0
        2.9.2
        3.4.2


其次我们在​​dependencyManagement​​标签中将所有的依赖做好版本声明

如果不知道这些标签的作用以及用法的,可以先看专栏的上一篇博客:
SpringCloud:maven快速上手 | maven常用标签(十三)​​


       
           
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
           

           
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring-cloud-alibaba.version}
                pom
                import
           

           
                io.seata
                seata-spring-boot-starter
                ${seata-version}
           

           
                com.alibaba.nacos
                nacos-client
                ${seata-version}
           

           
                io.springfox
                springfox-swagger2
                ${swagger.version}
           

           
                io.springfox
                springfox-swagger-ui
                ${swagger.version}
           

           
                com.baomidou
                mybatis-plus-boot-starter
                ${mybatis-plus.version}
           

       
 
   


这里咱们要注意的是,​​spring-boot-dependencies​​​和​​spring-cloud-alibaba-dependencies​​这两个依赖实际上并不是jar包,我们点击进去就可以知道,这是一个聚合项目,里面声明了常用的依赖的版本

我们通过引用这个线程的聚合项目,节省了大量常用依赖的版本管理

其次我们再在父项目中声明一下项目的jdk、maven版本以及编码格式。如果项目中有通用的maven插件配置,也可以在这里声明


       
           
                org.apache.maven.plugins
                maven-compiler-plugin
                ${maven.version}
               
                    ${java.version}
                    ${java.version}
                    UTF-8
               

           

       

   


1.2 服务的公用依赖提取到commons模块中
​​以下配置在commons模块的pom.xml中操作​​ 基于这样的一个案例,我们首先知道的是商品模块和订单模块中都有很多相同的依赖,那么我们把这些相同的依赖添加到公用模块中,如果没有公用模块,可以创建一个,专用于存储公用的实体类、工具类、公共依赖登

首先我们需要声明父项目,以此使用父项目中声明的依赖版本


        sprinGCloud2
        com.example
        1.0.0


其次将公用的依赖声明出来,这里会发现我们这里的依赖是没有声明版本的,这是因为我们已经在父项目中将版本声明好了。这也就是我们要做版本管理的意义所在


       
            org.springframework.boot
            spring-boot-starter-web
       

       
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
       

       
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
       
 
       
            org.projectlombok
            lombok
       
 
       
            io.seata
            seata-spring-boot-starter 
       
 
       
            com.alibaba.nacos
            nacos-client 
       
 
       
            io.springfox
            springfox-swagger2
       
 
       
            io.springfox
            springfox-swagger-ui
       
 
       
            com.baomidou
            mybatis-plus-boot-starter
       
 
       
            mysql
            mysql-connector-java
            runtime
       

   


1.3 商品、订单模块中引入commons模块
1、然后在商品模块和订单模块引入commons模块


        springcloud2
        com.example
        1.0.0
   

    4.0.0
    product-server-feign
    ${parent.version}
    product-server-feign
    product-server-feign

   
       
            com.example
            commons
            1.0.0
       

   


后续就可以只在commons中添加或者修改依赖,就能实现各个模块的公用依赖统一管理

需要注意的是:​​子项目中一定要用parent标签声明好父项目​​ 2、因为订单模块中还多了其他几个依赖,所以我们除了commons外还要在订单的pom中额外引入其他依赖


        springcloud2
        com.example
        1.0.0
   

    4.0.0
    order-server-feign
    ${parent.version}
    ${project.artifactId}

   
       
            com.baomidou
            dynamic-datasource-spring-boot-starter
       

       
            org.springframework.cloud
            spring-cloud-starter-openfeign
       

       
            io.GitHub.openfeign
            feign-Httpclient
       

       
            com.example
            product-server-feign
            ${parent.version}
       

   

3、commons中的公用依赖大部分网关模块都不需要,所以我们干脆就网关模块的依赖单独引入


        springcloud2
        com.example
        1.0.0
   

    4.0.0
    gateway-token
    ${project.parent.version}
    ${project.artifactId}

   
       
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
       

       
            org.springframework.cloud
            spring-cloud-starter-gateway
       

       
       
            io.JSONwebtoken
            jjwt
       

       
       
            io.springfox
            springfox-swagger2
       

       
       
            io.springfox
            springfox-swagger-ui
       

       
            org.projectlombok
            lombok
            true
       

   


如上我们就针对我们整个项目的各个模块做好了依赖版本管理,如果需要查看源码可以文章最后的git地址中下载

在聚合项目中实现版本管理
2.1 什么是聚合项目
所谓聚合项目,就是单独的一个空maven项目,只有pom文件,专门用于依赖的版本声明,其他的项目通过引入该聚合项目来实现依赖版本管理

这个比在父项目中进行版本管理更加凸显模块的专业化

2 实操
1、创建一个空maven项目,只保留pom.xml文件。将该项目的打包方式声明为pom

pom
1.
2、然后将上述的父项目中的​​dependencyManagement​​标签中的依赖管理添加到聚合项目的pom文件中

在商品服务、订单服务、网关服务、commons服务中引入该聚合项目,从而实现版本的统一管理

来源地址:https://blog.csdn.net/fengbin2005/article/details/133636406

您可能感兴趣的文档:

--结束END--

本文标题: pom管理规范

本文链接: https://lsjlt.com/news/424486.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • pom管理规范
    0. 引言 在单机架构下,我们只需要将我们的依赖在pom中引入。但是过渡到微服务架构后,会涉及到多模块引用相同的依赖,多模版之间依赖的版本太过分散难以管理的问题。 这就需要我们利用maven中依赖传递的特性,结合dependencyMana...
    99+
    2023-10-07
    java 开发语言 pom管理
  • 阿里云代理商管理规范
    1. 代理商资质要求 作为阿里云的代理商,需要满足以下资质要求: 具备合法的企业法人身份,拥有独立的法人资格。 具备良好的商业信誉和声誉,无不良经营记录。 具备一定的技术实力和服务能力,能够提供专业的技术支持和售后服务。 具备一定的市场...
    99+
    2023-10-27
    阿里 管理规范 代理商
  • 业务流程管理三段论之规范化
    业务流程管理三段论之规范化规范化:第二代流程规范化可以讲是程序化的升级版,很多企业在尝试到程序化的甜头之后,便开始思考管理的重要性以及如何通过抓好管理让企业经营更加稳健。规范化盛行的时代规范化管理强调企业管理体系的构建必须围绕制度化、程序化...
    99+
    2023-06-05
  • 财务软件管理办法规范操作、提升管理效率
    财务软件是现代企业财务管理工作的重要工具,其使用效率和准确性直接影响到企业的财务管理水平和决策效果。本篇文章将详细介绍财务软件管理办法,以规范操作、提升管理效率为目的,为企业的财务管理工作提供参考。 一、引言随着信息技术的发展,财务软件已经...
    99+
    2023-12-10
    财务软件 管理办法 效率
  • 管理蓝鲸平台MySQL数据库有哪些规范
    本文主要给大家简单讲讲管理蓝鲸平台MySQL数据库有哪些规范,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望管理蓝鲸平台MySQL数据库有哪些规范这篇文章可以...
    99+
    2024-04-02
  • Python依赖管理及打包工具Poetry使用规范
    目录啥是依赖规范版本约束^ 约束~ 约束* 约束比较符git 依赖路径依赖url 依赖Python 限制依赖项多个限制使用环境限制扩展依赖规范语法啥是依赖规范 可以以各种形式指定项目...
    99+
    2024-04-02
  • Python代码规范和命名规范
    前言 Python 学习之旅,先来看看 Python 的代码规范,让自己先有个意识,而且在往后的学习中慢慢养成习惯 目录 一、简明概述 1、编码 如无特殊情况, 文件一律使用 UTF-8 编码如无特殊情况, 文件头部必...
    99+
    2023-01-31
    代码 Python
  • BPMN2.0规范
    平台使用Activit工作流引擎,其中流程图的绘制使用BPMN2.0规范,BPMN2.0是一个工作流业界标准,规范了大型厂商和开源工作流产品的实现,Activiti5实现了该标准的大部分图元定义和执行语义解释,功能强大,Activiti5可...
    99+
    2023-06-02
  • 浅谈Android编码规范及命名规范
    前言:   目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑。   现大框架已经完成,正在进行细节模块上的开发   抽空总结一下And...
    99+
    2022-06-06
    Android
  • 规范-编码
    c++编码规范 c++11, xcode, vistual studio 编码规范 http://zh-google-styleguide.r... 常用库 标准库: http://en.cppreference.com/w/ 日志:...
    99+
    2023-01-31
  • PHP开发规范与PSR4命名空间规范
    引言:PHP作为一种广泛应用的编程语言,在开发过程中遵守规范是非常重要的,不仅可以提高代码的可读性和可维护性,还能提高团队协作效率。在本文中,我们将探讨PHP开发规范以及PSR-4命名空间规范,并且提供一些具体的代码示例。一、PHP开发规范...
    99+
    2023-10-21
    编程关键词 PHP开发规范 PSR命名空间规范
  • Python编码规范知识点整理
    本篇文章给大家带来了关于Python的相关知识,其中主要整理了编码规范的相关问题,想要写好python代码,必须了解python相关编码规范,有了这个的加持,编写的代码不仅可以实现相应的功能,而且简单易读,逻辑清晰,下面一起来看一下,希望对...
    99+
    2022-07-08
    python
  • 阿里mysql规范
    (二)索引规约 【强制】业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引。  说明:不要以为唯一索引影响了 insert速度,这个速度损耗可以忽略,但提高查找速度是明显的;另外,即使在应用层做了非常完善的校验和控制,...
    99+
    2020-02-10
    阿里mysql规范
  • Node.js编码规范
    调用函数的时候,函数名与左括号之间没有空格。 函数名与参数序列之间,没有空格;所有其他语法元素与左括号之间,都有一个空格。 使用小驼峰式命名法作为所有变量和属性的命名规则。 缩进使用两空格,统一使用单引号。...
    99+
    2022-06-04
    Node js
  • sql开发规范
    (预编译的好处:1.可以重复使用执行计划,减少sql编译所需时间。2.一次解析多次使用。3.避免sql注入。)(列和参数类型不一致时,会造成隐式转换)        not in可能造成索引失效      ...
    99+
    2024-04-02
  • mysql 语法规范
    1、不区分大小写2、有些语句可以缩进换行,如select *from hello ;3、单行注释: +注释内容 --+(空格) +注释内容 4、多行注释:/ / ...
    99+
    2024-04-02
  • MySQL规范推荐
    1. MySQL数据建模推荐规范: 1.1 合理使用 bigint(20) 数值类型: 类型: BIGINT 大小: 8 字节 范围(有符号): (-9 233 372 036 85...
    99+
    2024-04-02
  • MySQL设计规范
    1.  数据库设计规范数据库命名规范数据库基本设计规范数据库索引设计规范数据库字段设计规范SQL开发规范数据库操作规范1.1    数据库命名规范...
    99+
    2024-04-02
  • MongoDB开发规范
    一.命名规则 1.mongodb版本选择:默认新装数据库使用MongoDB 3.X 社区版。建议3.2.10+ 2.数据库设计规范数据库名可以是满足以下条件的任意UTF-8字符串:(1)不能出现除“_”...
    99+
    2024-04-02
  • Python 编码规范
    一 代码编排 1 缩进。4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。 2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。 3 类和top-level函数定义之间...
    99+
    2023-01-30
    Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作