2023年12月13日发(作者:)
编写一个简单的maven多模块项目的打包脚本
背景
Java 应用发布的时候,通常按某种目录结构组织部署包。为了避免每次发布的时候手动拷贝最新的 jar 包,可以利用
maven-assembly-
plugin
插件,直接将工程打包成特定目录的 zip 包。
本文介绍一个简单的打包脚本,完成发布一个固定包的功能。
实现步骤
笔者为一个同时包含
modelA
、
modelB
两个独立应用的多模块项目,编写了一个打包模块,过程如下。
第一步,在父工程下创建一个 maven 项目的新模块,命名为
assembly
,删掉 src 目录。
第二步,在
assembly
目录下创建一个部署包目录,命名为
template
,它的结构类似 tomcat 发布包:
第三步,编写
文件,
packaging
类型为
pom
,并添加
maven-assembly-plugin
打包插件配置:
第四步,在
assembly
目录下创建一个打包文件
,在该文件中定义最终部署包的文件来源。这里将模块 A 的可执行 jar 包打
入到 lib 目录下,示例脚本如下:
xmlns="/plugins/maven-assembly-plugin/assembly/1.1.3" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/plugins/maven-assembly-plugin/assembly/1.1.3 /xsd/">
中的配置
finalName
是最终打包文件名称,执行该打包脚本后生成一个
文件,就类似我们下载的 Tomcat 压缩包了。
bin 目录
bin 目录下通常是启动和停止脚本。
编写启动脚本
,以后台进程且忽略掉输出、指定 Spring 配置文件路径的方式启动 SpringBoot 的可执行 jar 包:
#!/bin/sh
basePath=$(cd `dirname $0`; pwd)
echo "basepath is $basePath"
cd ../lib
nohup java -Xmx512m -jar --onal-location=file:../conf/ >/dev/null 2>&1 &
停止脚本页比较简单,找到对应的进程 kill 掉:
jarPid=`ps -ef|grep |grep -v "grep"|awk '{print $2}'`
if [ "$jarPid" != "" ]; then
kill -9 $jarPid
fi
打包过程
包含
assembly
的多个模块的打包顺序如下:
由于
assembly
的打包方式
pom
,所以它最后一个执行,可以保证拿到其他模块的 jar 。启示录
这是个比较简单的应用,maven 的三个插件都对打包有不同的作用,下一章节将继续介绍打包插件的注意事项。


发布评论