当前位置: 首页 > news >正文

maven多模块项目jar包依赖版本统一管理最佳实践

maven多模块项目jar包依赖版本统一管理最佳实践

    • 1. 问题描述
    • 2. 解决方案
      • 2.1 父 pom配置
      • 2.2 模块中pom文件配置
    • 3. 总结

1. 问题描述

现有一个基于Java8构建的供应链管理springboot项目,项目的目录结构如下:

  • scm-parent(父工程)
    • scm-web(模块)
    • scm-service(模块)
    • scm-domain(模块)

实现maven jar包依赖的统一版本管理。

2. 解决方案

1)version 只允许出现在一个地方(父 pom 的 )
2)子模块 dependency里不准写 (除非是本级模块互相引用)

2.1 父 pom配置

pom.xml文件只是一个示例,大家重点关注dependencyManagement, properties中定义的版本号变量即可。

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><name>scm-parent</name><groupId>com.xx</groupId><artifactId>scm-parent</artifactId><version>0.0.1</version><packaging>pom</packaging><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><project.scm.version>0.0.1</project.scm.version><serverframe.version>1.0.1-SNAPSHOT</serverframe.version><!-- 第三方依赖版本 --><lombok.version>1.18.22</lombok.version><mybatis.version>3.5.19</mybatis.version><mybatis-plus.version>3.5.12</mybatis-plus.version><mybatis-plus-generator.version>3.5.0</mybatis-plus-generator.version><docx4j.version>3.2.1</docx4j.version><shiro.version>1.7.1</shiro.version>...</properties><modules><module>scm-domain</module><module>scm-service</module><module>scm-web</module></modules><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>...</groupId><artifactId>...</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>${shiro.version}</version></dependency></dependencies></dependencyManagement></project>

2.2 模块中pom文件配置

模块中pom文件只定位maven坐标,不能带版本号

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><name>scm-service</name><artifactId>scm-service</artifactId><version>${project.scm.version}</version><packaging>jar</packaging><parent><groupId>com.lehui.lhscm</groupId><artifactId>scm-parent</artifactId><version>0.0.1</version></parent><dependencies><!-- word模板引擎 --><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId></dependency><dependency><groupId>...</groupId><artifactId>...</artifactId></dependency></dependencies></project>

3. 总结

dependencyManagement 本身不引入依赖,只是"版本声明":

  • dependencyManagement:只有子模块声明了对应的maven坐标才引入指定版本的maven依赖,不声明不引入。
http://www.jsqmd.com/news/1272923/

相关文章:

  • uv:快得像火箭,顺便把“安装依赖”藏起来了
  • 英雄联盟智能游戏助手:3分钟掌握实时数据查询与决策支持
  • 2026唐山专业靠谱自动化输送线供货供应商电话优选指南 - geo交流
  • Java开发者如何用现有技术栈构建企业级AI应用
  • RadioNet:低信噪比调制识别的深度神经网络架构
  • 纺织业AI质检:IACheck如何变革证书审核流程
  • ETAE国际会议投稿指南与学术价值解析
  • 决策树算法:从信息论基础到Python工程实践
  • 解决ssh的rviz显示问题
  • AI Agent开发核心架构与Google ADK实战指南
  • 人工智能训练师职业发展路线|执行者到专家到架构者+技术/管理/创业三路径
  • WSL2环境下USB设备连接解决方案与实践
  • COMSOL冻土水热力耦合建模与工程应用实践
  • Windows Defender彻底移除:7步终极清理方案释放系统性能
  • 海豚善学|AI漫剧培训|AI绘画培训|AIGC培训|2026年靠谱的线上专业系统培训机构 - 培训机构评测网
  • NVIDIA vGPU软件栈部署指南:KVM环境下的虚拟GPU解决方案
  • Java AI框架对比:Spring AI与LangChain4j实战解析
  • CCF-CSP备战NO.3前缀和与差分
  • Python NLP实战:从文本分类到模型部署
  • Vue.js渐进式框架核心原理与工程实践
  • CCNA实战:用Port Security与Wireshark构建企业网络物理防线
  • MiniMax Music 2.6多模态音乐生成技术解析
  • Qoder平台:企业级智能开发解决方案解析
  • HarmonyOS7 IndeterminateLoadingState 教程:不确定进度的加载状态怎么表现
  • Python抽象类详解:从基础到高级应用
  • MySQL数据库从入门到精通:索引优化、SQL性能与事务原理实战指南
  • Django旅游助手系统开发指南与毕业设计实践
  • 基于Okta与SCIM协议的企业用户生命周期自动化管理实战指南
  • 六自由度机械臂Matlab建模与仿真实践指南
  • 苏州沿江厂区金属屋面修缮怎么选?2026 全域彩钢瓦除锈防水服务商横向测评 + 太湖盐雾梅雨专属避坑攻略 - 本地便民网