简述
项目越来越趋向模块化开发,使用maven构建工程,必然涉及到父子pom的关联,父pom文件的父级又会继承springboot项目,就maven父子项目依赖这样在开发中踩坑不少,简单记录一下。
看问题之前先了解maven中的两个标签和,明白的直接跳过。
maven标签
1、
这里其实是起到管理依赖jar版本号的作用,一般只会在项目的最顶层的pom.xml中使用到,所有子module如果想要使用到这里面声明的jar,只需要在子module中添加相应的groupId和artifactId即可,并不需要声明版本号,需要注意的是这里面只是声明一个依赖,并不是真实的下载jar,只有在子module中使用到,才会去下载依赖。
2、
我们是这里引入了一个jar包之后,这里如果没有加上version版本号的话,那么maven就会去里找对应groupId和artifactId的jar,如果有就继承他,如果没有就会报错,这时候其实在我们配置的本地仓库中会真实的下载对应的jar包,这时候所有的子module都会默认继承这里面所有声明的jar。
总的来说,就是在中声明依赖和版本号,该标签中的依赖不会被子模块继承,仅仅是声明,子pom中直接引入依赖,具体的版本号会在父子中去找。
父pom的packaging都是pom,子项目pom的packaging都是jar。关于在父子配置pom的引用有两种方案,这里以项目为例说明问题。
第一种pom配置
我们希望在父pom中引入相关依赖,都记录在下,子模块直接继承父pom的依赖,在子模块中开发中就不必再去引入依赖,但在项目中有模块可能就是单一的工具包,它并不需要的依赖,这时候启动就会冲突。可以这样解决,在父pom中定义springboot版本号,子模块作为项目启动的模块配置springboot插件依赖,普通的dao,serivce,common不必引入。如下配置文件,文件中只列举个别依赖包,重在说明问题:
- 父pom.xml配置:
- 普通子模块pom.xml配置:
- 启动类子模块pom.xml配置:
第二种pom配置
将所有的依赖在父pom的中声明,子模块把需要的都引入一遍:
- 父pom.xml配置:
- 普通子模块pom.xml配置:
- 启动类子模块pom.xml配置:
以上是个人在构建项目中总结出来的,可供参考,重在理解。
不会,我可以学;落后,我可以追赶;跌倒,我可以站起来!我一定行!
今天的文章
maven父子项目依赖分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/136842.html