热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在Maven中高效管理多模块项目中的依赖关系

在Maven中高效管理多模块项目的依赖关系是一项重要的技能。通过合理配置父POM文件,可以统一管理和控制各子模块的依赖版本,避免重复导入和版本冲突。本文将探讨如何利用Maven的最佳实践,确保项目依赖的一致性和可维护性,同时提高开发效率。
Maven 中如何管理多模块项目的依赖关系

平时在查看项目的过程中,发现包的依赖关系及其随便,在各个子模块中都各自引入相应的依赖包,有些时候重复导入了也不会发觉。
在参考alibaba dubbo的源码之后,做出如下总结(别人家的代码 ==!)

groupId:组织标识,一般为:公司网址的反写+项目名
artifactId:项目名称,一般为:项目名-模块名

1.首先建一个空的maven项目,项目只需要一个pom.xml文件

交代一下我的demo

项目(root)的groupIdcom.nezha.learn.demo

项目名称 artifactIddemo

该项目有三个子模块:


demo-redis

demo-parent

demo-juc

2.通过IDEANew > Module来构建多个模块

其中的pom.xml文件如下:



4.0.0
com.nezha.learn.demo
demo
pom
1.1-SNAPSHOT



demo-redis

demo-parent

demo-juc




org.apache.maven.plugins
maven-release-plugin
2.4.1

true





3.创建一个专门管理依赖包的模块

同样,该模块只有一个pom.xml文件




demo
com.nezha.learn.demo
1.1-SNAPSHOT
../pom.xml

4.0.0
pom
demo-parent


2.9.0
1.5.2.RELEASE






redis.clients
jedis
${jedis.version}



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




注意此处的artifactId是项目名称,因为所有子模块的依赖都在项目rootpom.xml中定义的。

4.在子模块中引入demo-paren的依赖




demo-parent
com.nezha.learn.demo
1.1-SNAPSHOT
../demo-parent/pom.xml

4.0.0
demo-juc


org.springframework.boot
spring-boot-starter


${project.groupId}
demo-redis
${project.version}



注意此处的artifactIddemo-parent
此时引入的spring依赖是不需要加上版本号的
然后${project.groupId}${project.version用于指代项目和版本。

如何更新所有子模块的版本号

这个也好解决,Maven有插件鸭!

在父级的pom.xml中加个插件就OK了,plugins > release > update-versions




org.apache.maven.plugins
maven-release-plugin
2.4.1

true




maven的pom文件报错: must be “pom” but is “jar”

parent工程的pom.xml文件的project节点下加入如下节点:

pom

参考文献

  1. @Maven POM 详解:https://www.jianshu.com/p/8417a94c4d94
  2. 使用maven-release-plugin自动化版本发布https://blog.csdn.net/shenchaohao12321/article/details/79302791
  3. spring dubbo的源码:https://github.com/apache/incubator-dubbo-spring-boot-project

推荐阅读
author-avatar
一个人灬过世界amp丶_420
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有