作者:一个人灬过世界amp丶_420 | 来源:互联网 | 2024-10-24 17:04
在Maven中高效管理多模块项目的依赖关系是一项重要的技能。通过合理配置父POM文件,可以统一管理和控制各子模块的依赖版本,避免重复导入和版本冲突。本文将探讨如何利用Maven的最佳实践,确保项目依赖的一致性和可维护性,同时提高开发效率。
Maven 中如何管理多模块项目的依赖关系
平时在查看项目的过程中,发现包的依赖关系及其随便,在各个子模块中都各自引入相应的依赖包,有些时候重复导入了也不会发觉。
在参考alibaba dubbo的源码之后,做出如下总结(别人家的代码 ==!)
groupId:组织标识,一般为:公司网址的反写+项目名
artifactId:项目名称,一般为:项目名-模块名
1.首先建一个空的maven项目,项目只需要一个pom.xml
文件
交代一下我的demo
项目(root)的groupId
是com.nezha.learn.demo
项目名称 artifactId
是 demo
该项目有三个子模块:
demo-redis
demo-parent
demo-juc
2.通过IDEA
中New
> 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
是项目名称,因为所有子模块的依赖都在项目root
的pom.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}
注意此处的artifactId
是demo-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
参考文献
- @Maven POM 详解:https://www.jianshu.com/p/8417a94c4d94
- 使用maven-release-plugin自动化版本发布https://blog.csdn.net/shenchaohao12321/article/details/79302791
- spring dubbo的源码:https://github.com/apache/incubator-dubbo-spring-boot-project