刚刚接手一个2货建的svn,现在又来一个2货建的gitlab。
为啥扯到gitlab呢,因为jenkins构建用gitlab拉代码,那个2货建的项目,真牛,也不说他错,只是奇葩,一个外包公司,估计也没有为你们考虑什么,但也是第一次见,gitlab项目进去的不是项目的根目录,而是某个目录下,就等于多了一层,平常git拉代码啥的都不影响,但一用起来jenkins打包,而且还是个微服务分布式架构的项目,那就一万只草泥马在心里奔腾。中间的波折不在这里说了,如果有人也是这样卡住单独问,这里只说调用顶层maven。
正题:调用顶层maven,这个是啥,就是调用你父模块的pom打包(一开始我是搜索单独打包顶层,不打包子模块),并把子模块都一起运行打包。其实想用的意愿,当是个多模块项目时,你又想单独打包每个子模块时并推送到指定服务器,会出现缺少父模块的包,非要你先把父模块的包打到本地仓库才行,用自己电脑打包没问题,但是,放在jenkins,特别是分布式架构,还要分不同的服务器打包,不同的配置文件,又是个异常文件目录结构(又一万只草泥马在心里奔腾)。
很简单的一个配置项,选择mvn版本,在填一下目标,over。正常来说是over了,TMD的异常目录结构(总有种想另起山头的冲动,但外包又在持续更新,我又不是领导)。调用顶层maven目标,就是直接在你的gitlab项目中的根目录下找到pom.xml文件进行打包,目标直接写install或者package之类的都可以。就是路径不能改,试过在它的前一个步骤加上cd下一层目录,都不行,估计是固定好的了,改不了,在目标不能加路径(牢记,要不然自己看日志输出就知道了)。
还好,刚刚才折腾完单独部署子模块,对应jenkins的配置有了一定的掌握,可以直接上指令,呵呵。
顶层就不用了,直接执行shell,先cd到你到你的顶层pom的根目录,再执行单独打包某个模块的mvn指令
/home/apache-maven-3.6.3/bin/mvn install:install-file -Dfile=pom.xml -DgroupId=com.xxxxx -DartifactId=xxxxx -Dversion=1.0-SNAPSHOT -Dpackaging=pom
这句话意思是,我只打包pom里面某个模块,当前的需求是,我只想单独打包顶层pom,用来给子模块编译时用的。
当然,如果你的项目目录结构正常又只想打包顶层,上面两个图直接改下都可以直接用了。