工作随笔——一次简单的Maven加速构建实战
2016-07-29 00:00
417 查看
注意:所有的编译、打包、部署全部是通过Jenkins完成的。
公司内部有一个项目,开始做的时候已经预计到会有很多客服端。所以开发就搞了如下的结构:
最开始的时候。因为项目简单,所以直接全部编译打包。然后从一堆产物中获取需要的产物进行部署。
随着项目的持续接入,项目结构如下:
在后来的使用过程中发现,原来的命令已经不能满足我们的需要了。原因如下:
全部编译、打包、上传私服库、部署到tomcat非常耗时。
其中任何一个出错都会自动停止,需要等待开发修正。
所以想起了学习Maven时看见的裁剪反应堆。经过一段时间的折腾,使用命令如下:
使用此命令后,速度提升非常大。原本要5分多钟的构建,现在直接缩短到1分钟内。
但是某天整体升级版本号到2.0.0后,依赖fft-api的管理平台程序始终无法构建。查询报错信息后发现是私服库没有2.0.0的父级pom.xml。
仔细查询Jenkins日志发现,父级pom.xml没有上传。因为我裁剪的反应堆只有fft-api,fft-client-shiyan俩个子模块,所以父级pom.xml是不会上传的。
最后使用命令如下:
最后,这个问题完美解决了。
参考:
http://www.cnblogs.com/zz0412/p/3767146.html http://books.sonatype.com/mvnref-book/reference/_using_advanced_reactor_options.html
公司内部有一个项目,开始做的时候已经预计到会有很多客服端。所以开发就搞了如下的结构:
fft-api # 公用的API,所有的程序都必须使用 fft-client-hubei # 湖北客户端 fft-job # 定时任务 fft-persistent # 数据库连接层 fft-persistent-api # 数据库连接层API fft-server # 公用服务端。所有的客户端都连接服务端,服务端去连接数据库连接层。 pom.xml # 父级pom文件,定义通用的配置
最开始的时候。因为项目简单,所以直接全部编译打包。然后从一堆产物中获取需要的产物进行部署。
$ clean deploy -B -e -U -Dmaven.test.skip=true # 反应堆输出日志如下: [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Reactor Build Order: [INFO] [INFO] Froad FFT # 注意日志中这个父级pom.xml的变化 [INFO] FFT Api [INFO] FFT-Persistent-Api [INFO] FFT Server [INFO] FFT Client HuBei [INFO] FFT-Persistent [INFO] FFT Job [INFO] [INFO] ------------------------------------------------------------------------
随着项目的持续接入,项目结构如下:
fft-api # 公用的API,所有的程序都必须使用 fft-client-hubei # 湖北客户端 fft-client-chongqing # 重庆客户端 fft-client-dezhou # 德州客户端 fft-client-jiangxi # 江西客户端 fft-client-jining # 济宁客户端 fft-client-lingxian # 陵县客户端 fft-client-neimenggu # 内蒙古客户端 fft-client-shandong # 山东客户端 fft-client-shiyan # 湖北十堰客户端 fft-job # 定时任务 fft-persistent # 数据库连接层 fft-persistent-api # 数据库连接层API fft-server # 公用服务端。所有的客户端都连接服务端,服务端去连接数据库连接层。 pom.xml # 父级pom文件,定义通用的配置 # 反应堆输出日志如下: [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Reactor Build Order: [INFO] [INFO] FFT PARENT [INFO] FFT Api [INFO] FFT-Persistent-Api [INFO] FFT Server [INFO] FFT Client ChongQing [INFO] FFT Client JiangXi [INFO] FFT Client JiNing [INFO] FFT Client HuBei [INFO] FFT Client NeiMengGu [INFO] FFT Client ShanDong [INFO] FFT Client DeZhou [INFO] FFT Client LingXian [INFO] FFT-Persistent [INFO] FFT Client ShiYan [INFO] FFT Job [INFO] [INFO] ------------------------------------------------------------------------
在后来的使用过程中发现,原来的命令已经不能满足我们的需要了。原因如下:
全部编译、打包、上传私服库、部署到tomcat非常耗时。
其中任何一个出错都会自动停止,需要等待开发修正。
所以想起了学习Maven时看见的裁剪反应堆。经过一段时间的折腾,使用命令如下:
$ clean deploy -B -e -U -Dmaven.test.skip=true -pl fft-api,fft-client-shiyan # 其他客户端相同,这儿就用十堰客户端代表。 # 反应堆输出日志如下: [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Reactor Build Order: [INFO] # 反应堆中并没有Froad FFT这个父级pom.xml [INFO] FFT Api [INFO] FFT Client ShiYan [INFO] [INFO] ------------------------------------------------------------------------
使用此命令后,速度提升非常大。原本要5分多钟的构建,现在直接缩短到1分钟内。
但是某天整体升级版本号到2.0.0后,依赖fft-api的管理平台程序始终无法构建。查询报错信息后发现是私服库没有2.0.0的父级pom.xml。
仔细查询Jenkins日志发现,父级pom.xml没有上传。因为我裁剪的反应堆只有fft-api,fft-client-shiyan俩个子模块,所以父级pom.xml是不会上传的。
最后使用命令如下:
$ clean deploy -B -e -U -Dmaven.test.skip=true -pl -am # -am 将自动构建fft-client-shiyan模块所依赖的其他模块 # 反应堆输出日志如下: [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Reactor Build Order: [INFO] [INFO] FFT PARENT [INFO] FFT Api [INFO] FFT Client ShiYan [INFO] [INFO] ------------------------------------------------------------------------
最后,这个问题完美解决了。
参考:
http://www.cnblogs.com/zz0412/p/3767146.html http://books.sonatype.com/mvnref-book/reference/_using_advanced_reactor_options.html
相关文章推荐
- 学习笔记——Maven settings.xml 配置详解
- Jenkins进阶系列之——10Publish Over SSH插件
- Linux 修改IP地址DNS服务器等网络设置
- Ubuntu安装uget和aria2下载工具
- Jenkins进阶系列之——05FTP publisher plugin插件
- Jenkins进阶系列之——09配置Linux系统ssh免密码登陆
- Linux安装DB2_V10
- ubuntu14.04禁用guest用户登录
- 学习笔记——Maven 内置变量
- Windows的Subversion备份脚本
- Jenkins进阶系列之——12详解Jenkins节点配置
- 第二章:Android,Getting Start(一)
- 工作随笔——Intellij_idea-14官方快捷键中文版
- 设定linux系统支持的字符集
- 学习笔记——Ant
- 没想到国美竟然用oracle的团队来搭建电商平台
- webtrends 分析报告
- 攻克防图片盗链
- 进制转换
- Zookeeper全解析——Paxos