刚接手公司的项目虽说也多模块、分布式部署,但是模块之间却没有被父项目管理,每个模块是一个小的父子项目,管理了两个子项目,单独维护着当前模块内使用的依赖,版本等,模块之间自然有很多重复引用的依赖,我不知道当初为什么这样创建,在我集成apollo配置中心的时候我改掉了这样依赖结构,所有的模块的依赖都和版本都统一由一个父pom管理,这也为后面埋下一个坑。
测试环境上线的时候,使用的jenkins自动部署,原以为更换了源码路径就可以了,但是发版错误提示没有定义版本号,×××的是要部署的模块代码,其他模块没有下载源码,可能这就是当初为什么人家单独在模块pom里维护当前项目的依赖,因为打包自身的配置就够用了,现在换成了父项目管理,版本信息是继承来的,而源码只现在了当前模块,没有父pom所以版本信息找不到,那就要把下载源码的路径向上一级
这里Repository URL的路径指向父项目,不再是部署的模块,虽然有了父pom文件,但是把其他所有的模块都下载了,后面再一打包很耗时间,好在maven有命令,可以指定子项目打包:
clean install -T 1C -Dmaven.test.skip=true -Dmaven.compile.fork=true -U -pl 子项目名称 -am
主要是后面两个命令,pl指定要打包的子项目,am是当前项目依赖的模块项目也打包
改完这里之后,jenkins配置获取打好的war包路径也需要改一下
就是这里的Source files 和 Remove prefix两个地方
修改完之后可以正常使用
感觉不完美的地方就是部署单个模块要把所有的模块的源码都下载下来,因为是由最外面的父pom管理的,虽然源码并不是很大。
原文地址:https://blog.51cto.com/wangguangshuo/2419823
时间: 2024-10-06 19:30:01