一款將 SpringBoot 項(xiàng)目做成Windows Service 的 Maven 插件
包括但不限于 SpringBoot ,任何打成 java jar 包運(yùn)行的 Maven 項(xiàng)目都可以使用
編寫初衷
- 公司有個(gè)項(xiàng)目
- Java 部分的全部使用的是SpringBoot
- 該項(xiàng)目的部署環(huán)境是 Windows
- 公司想把 各個(gè) SpringBoot 的模塊托管一下
- 托管的使用方式要簡單圃庭,易用压固,測試在打包部署的時(shí)候要很容易上手
- 期間嘗試過 Spring Boot Admin 和 Jenkins,都說不好用...
- 于是就想著 將Spring Boot 的服務(wù)制作成 Windows 服務(wù),這樣基本上會操作電腦的人都會使用了,夠簡單易用的了吧
- 花了一上午時(shí)間將其中一個(gè) Spring Boot 模塊制作成了 Windows Service
- 發(fā)現(xiàn)再做其他的模塊的時(shí)候吁讨,很多工作都是重復(fù)的歉提,心想著能夠?qū)⑦@個(gè)功能提取出來就好了
- 于是就寫了這個(gè) Maven 插件
使用演示地址:
MP4 :http://image.joylau.cn/blog/joylau-springboot-daemon-service-video.mp4
怎么使用奇唤?
- 使用方法很簡單礼烈,和普通的 Maven 插件一樣使用就可以了,如下
<plugins>
<plugin>
<groupId>cn.joylau.code</groupId>
<artifactId>joylau-springboot-daemon-windows</artifactId>
<version>1.0.RELEASE</version>
<executions>
<execution>
<id>make-win-service</id>
<phase>package</phase>
<goals>
<goal>make-win-service</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
注意:
- 這里的 phase 寫的是 package,意思是該插件在 mvn package 的時(shí)候調(diào)用,你也可以根據(jù)不同的需求來更改勋篓,比如 install, test等等
- goal 寫 make-win-service 就可以了吧享,不需要改動
- 在你的項(xiàng)目中按照以上的方式引入插件后,現(xiàn)在可以 打包了
mvn package
打包過程中譬嚣,看到如下日志信息钢颂,便制作成功了:
此時(shí),在你項(xiàng)目的target目錄下會生成一個(gè) jar 包名字 一樣的壓縮包
進(jìn)入文件夾拜银,解壓這個(gè)壓縮包殊鞭,你會看見如下內(nèi)容的文件
注意:
- 5個(gè) bat 文件,請右鍵以管理員的身份運(yùn)行
- 各文件的文件名無特殊情況尼桶,不需要修改
- 一旦安裝成了 Windows 服務(wù)操灿,目錄下的文件就不要移動了
-
命令運(yùn)行時(shí),可能會提示安裝.NET,安裝完成就可運(yùn)行命令了泵督,不過現(xiàn)在大部分的 Windows 服務(wù)器或者個(gè)人電腦都會默認(rèn)安裝了.NET,沒有的話啟用一下就好了趾盐,如下圖:
-
運(yùn)行各個(gè)命令是注意提示信息,例如卸載完服務(wù)都的狀態(tài)為NonExistent,剛安裝完服務(wù)后的狀態(tài)為Stopped救鲤,服務(wù)成功啟動的狀態(tài)為Started...等等
擴(kuò)展參數(shù)
想要在服務(wù)啟動時(shí)添加自定義參數(shù),如 SpringBoot 的配置參數(shù)或者 JMV 參數(shù)久窟?
像如下配置即可:
<plugin>
<groupId>cn.joylau.code</groupId>
<artifactId>joylau-springboot-daemon-windows</artifactId>
<version>1.0.RELEASE</version>
<executions>
<execution>
<id>make-win-service</id>
<phase>package</phase>
<goals>
<goal>make-win-service</goal>
</goals>
</execution>
</executions>
<configuration>
<arguments>
<argument>--server.port=9090</argument>
</arguments>
</configuration>
</plugin>
上面配置了一個(gè) Spring Boot 應(yīng)用的啟動端口9090
使用注意
- 打包使用過程中需要聯(lián)網(wǎng)
- 文檔中有些圖片可能看不到,再次刷新下頁面就可以
- 服務(wù)的id為artifactId本缠,服務(wù)的名稱為artifactId+version斥扛,服務(wù)的描述為description
GitHub 地址
源碼已開源,地址 : https://github.com/JoyLau/joylau-springboot-daemon-windows
博客地址
博客地址 : http://blog.joylau.cn/