appassembler-maven-plugin详解
一直很好奇开源软件的启动脚本是怎么写出来的,直到最近看到seata pox.xml 才了解到有个appassembler-maven-plugi插件非常简单。可以用过简单xml配置,就可以将项目打包并且生成多个平台的启动脚本,非常简单、实用,下面我全方位带大家去了如何去使用它。
介绍插件
根据官网介绍,这个插件主要用于生成启动 java 应用程序的脚本,能将项目依赖jar能够打包目录中,并且它们加入启动脚本类路径中。
支持平台
- Unix-variants
- Windows NT (Windows 9x is NOT supported)
- Java Service Wrapper (JSW) 可以很方便得在各个平台(windows,linux,max os)管理Java进程,管理JVM,启动停止,开机启动,管理内存溢出的异常 标准版还可以发错误日志email,检测死锁。官方说明
appassembler:assemble 打包项目并且配置bin 启动脚本,可以理解为使用类似spring-boot-maven-plugin打包出来项目,可以通过java -jar 方式启动项目,但是不支持stop、satus、restart这些操作,比较原始。
appassembler:create-repository 创建一个 appassembler 存储库,就是将工程打成jar
appassembler:generate-daemons 生成基于 JSW 的守护进程包装器,大多数人都是使用这个,重点讲。
appassembler:assemble
org.codehaus.mojo
appassembler-maven-plugin
2.1.0
unixwindows
${project.build.directory}/${project.name}
lib bin conf true src/main/resources
true flat
UTF-8
logs
tmp tk.shenyifeng.demo.DemoApplication
demo
-server
-Xms256M
-Xmx256M
-Xss512k
-Xloggc:@BASEDIR@/logs/demo_gc.log
-verbose:gc
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=@BASEDIR@/logs/java_heapdump.hprof
运行命令
mvn package appassembler:assemble
就可以在target/工程名/下看见打包好的工程,进入bin 目录可以看见有unix、windows 两大平台的运行脚本,但是这个脚本只有启动工程,不支持stop、restart 。appassembler:generate-daemons 这个才是最重要的命令,使用插件都是使用这个生成可以启动、停止的脚本,方便在多个平台部署。下面直接贴上xml
org.codehaus.mojo
appassembler-maven-plugin
2.1.0
unixwindows
${project.build.directory}/${project.name}
lib bin conf true src/main/resources
true
.sh
.bat
flat
UTF-8
logs
tmp
demo
tk.shenyifeng.demo.DemoApplication jsw
可以通过generatorConfigurations 设置脚本平台
jsw
linux-x86-32
linux-x86-64
windows-x86-32
windows-x86-64
-server
-Xms256M
-Xmx256M
-Xss512k
-Xloggc:logs/demo_gc.log
-verbose:gc
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=logs/java_heapdump.hprof
>
tk.shenyifeng.demo.DemoApplication
demoApp
在命令行执行
mvn clean package appassembler:generate-daemons打包的文件夹在参数 target 设置,如果没有默认值
${project.build.directory}/generated-resources/appassembler
, 所以生成文件假放在 target\generated-resources\appassembler\ 下。注意在windows 下执行改脚本需要使用管理员,不然会出现
wrapper | OpenSCManager failed - 拒绝访问。 (0x5)首先执行 ,安装服务
demo.bat install安装成功,就可以使用 start 运行服务了
demo.bat start注意这个插件和
spring-boot-maven-plugin
不兼容,会出现无法找到主类
异常,主要还是因为可执行的jar格式在BOOT-INF/classes中打包应用程序类。这意味着当可执行jar用作依赖项时,无法找到它们。遇到这种情况在打包是,去除spring-boot-maven-plugin
即可【appassembler-maven-plugin详解】项目已经放在GitHub,有兴趣自己去查看。
推荐阅读
- 一个人的旅行,三亚
- 一个小故事,我的思考。
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 开学第一天(下)
- 一个人的碎碎念
- 2018年11月19日|2018年11月19日 星期一 亲子日记第144篇
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- 第326天
- Y房东的后半生14
- 奔向你的城市