需求
將spring boot項(xiàng)目編譯成jar,注冊(cè)為windows系統(tǒng)服務(wù)
實(shí)現(xiàn)方式
在網(wǎng)上了解到,winsw這個(gè)開源項(xiàng)目,去github看了下,作者常年維護(hù)更新,文檔齊全,擁躉不少,自己寫了個(gè)小demo體驗(yàn)了下還不錯(cuò),然后又運(yùn)行了一個(gè)晚上,沒啥問題,遂決定采用它
開源地址
- 源庫地址 [https://github.com/winsw/winsw]
- 教程所需示例文件地址[https://gitee.com/war110/test-winsw]
- 教程所需實(shí)力文件下載地址[https://gitee.com/war110/test-winsw/releases/tag/v1]
需要準(zhǔn)備什么?
- 在releases下載這個(gè)軟件的本體,一個(gè)exe,一個(gè)配置的xml
- 一個(gè)可以正常運(yùn)行的jar(我是寫了個(gè)自用的項(xiàng)目,每五秒輸出一次日志)
-
一個(gè)win7或者win10的操作系統(tǒng)
注:下載示意,我使用的版本是2.11.0
怎么制作服務(wù)?
- 準(zhǔn)備好寫好的jar,我這個(gè)是個(gè)剛初始化的spring boo項(xiàng)目,就額外加了個(gè)log日志的配置文件,代碼倉庫如下,exe和xml也在里面
- 配置xml文件,文件名改成和jar同名文件,例testexe.xml
<?xml version="1.0" encoding="UTF-8" ?>
<service>
<!-- 該服務(wù)的唯一標(biāo)識(shí) -->
<id>test-data</id>
<!-- 注冊(cè)為系統(tǒng)服務(wù)的名稱 -->
<name>SW test Data</name>
<!-- 對(duì)服務(wù)的描述 -->
<description>測(cè)試數(shù)據(jù)生成服務(wù)</description>
<!-- 將java程序添加到系統(tǒng)服務(wù) -->
<executable>java</executable>
<!-- 執(zhí)行的參數(shù) -->
<arguments>-jar "testexe.jar"</arguments>
<!-- 日志模式 這種是exe幫忙收集產(chǎn)生的日志配置,如果jar自帶了log的話,也會(huì)輸出 -->
<!--<logpath>\logs</logpath>
<log mode="roll-by-size">
<!-- 歸檔文件大小,單位是KB -->
<sizeThreshold>3</sizeThreshold>
<keepFiles>8</keepFiles>
</log>-->
<!-- 日志模式 這種是exe不用幫忙收集產(chǎn)生的日志配置 因?yàn)閖ar自帶了log輸出那一套 -->
<log mode="none"></log>
</service>
-
將exe文件改名為跟jar同名的文件
- 將服務(wù)注冊(cè)為系統(tǒng)服務(wù)
# cmd 管理員模式進(jìn)入該文件夾內(nèi)
# 輸入命令注冊(cè)為系統(tǒng)服務(wù)
testexe.exe install testexe.xml
# 看的success字樣說明已經(jīng)注冊(cè)成功了
# 打開windows 服務(wù)管理界面,右鍵啟動(dòng)這個(gè)服務(wù),查看日志
- 卸載該服務(wù)
# cmd 管理員模式進(jìn)入該文件夾內(nèi)
# 停止該服務(wù)
testexe.exe stop
# 輸入命令卸載該服務(wù)
testexe.exe uninstall
擴(kuò)展
服務(wù)命令
Your renamed WinSW.exe binary also accepts the following commands:
命令 | 描述 |
---|---|
[install] | Installs the service 安裝服務(wù). |
[uninstall] | Uninstalls the service. 卸載服務(wù) |
[start] | Starts the service. 啟動(dòng)服務(wù) |
[stop] | Stops the service. 停止服務(wù) |
[restart] | Stops and then starts the service.重啟服務(wù) |
[status] | Checks the status of the service. 查看服務(wù)狀態(tài) |
[refresh] | Refreshes the service properties without reinstallation.無需重新安裝即可刷新服務(wù)屬性 |
[customize] | Customizes the wrapper executable.自定義包裝器可執(zhí)行文件 |
以下是官方寫的 文檔地址
[https://github.com/winsw/winsw/blob/v3/docs/cli-commands.md]