【Maven 技术专题】如何使用 Assembly 插件实现自定义打包
前提概要
最近我们项目越来越多了,然后我就在想如何才能把基础服务的打包方式统一起来,并且可以实现按照我们的要求来生成,通过研究,我们通过使用 maven 的 assembly 插件完美的实现了该需求,爽爆了有木有。本文分享该插件的配置以及微服务的统一打包方式。
maven-assembly-plugin 打包插件
配置步骤及其他事项
首先我们需要在 pom.xml 中配置 maven 的 assembly 插件
配置参数介绍说明
execution:配置执行器
phase:绑定到 package 生命周期阶段上
goal:{single}:只运行一次
configuration->appendAssemblyId:生成包的末尾添加 assembly id,一般关闭
descriptor:src/main/assembly/assembly.xml:后续会讲解,主要用于描述如何进行打包的规则。
自定义格式包 assembly.xml
接着我们在 src/main/assembly 文件中配置 assembly.xml 文件
生成的 lib 文件夹下放该项目的所有依赖以及该服务 jar 包,src/main/bin 文件夹下我们一般放 start.sh 和 stop.sh 两个脚本文件用来开启和关闭该服务,打包后直接放到根目录下。
生成的 tar.gz 文件的名字为:[maven-assembly-plugin 插件中配置的 finalName]-[assembly.xml 配置的 id(若 assembly 中没有指定 id,则只有前半部分)].
所以:maven-compiler-plugin 是用来将代码生成 jar 的工具,maven-assembly-plugin 是用来生成指定格式的工具。
配置完成后进入标签里指定的位置建 xml 文件,这里是 src/assembly/assembly-descriptor.xml,内容如下:
启动脚本
在完成以上配置后,只需在指定的位置建立 scripts/start.sh 和 stop.sh 两个脚本即可完成。具体启动脚本如下:
start.sh 启动文件脚本
主要命令是获取当天日期,然后在 log 文件夹下建立指定日期的文件夹,并将日志存放进去。其中–spring.config.location 用于加载指定的配置文件,多个配置文件用逗号分割。
stop.sh 停止文件脚本
停止脚本通过 ps -ef 获取进程 id 然后 kill,如下:
结语
以上配置完成后使用 mvn package 命令即可自动打成一个 zip 压缩包,包内包含 bin、conf、lib 文件夹,可用启动脚本一键启动。实际上这里能修改的地方还有很多,包括启动脚本也可以用其他方式如 java -classpath 方式启动等等,具体的可以根据自身需求进行相应修改。
版权声明: 本文为 InfoQ 作者【李浩宇/Alex】的原创文章。
原文链接:【http://xie.infoq.cn/article/52a2022c7827ea4df031b8efd】。文章转载请联系作者。
评论