简介

在linux下部署springboot项目是一件很简单的事,直接后台运行就行了,最多写个shell脚本开机自启就行了。我们最近做的项目需要在windows上部署,在windows上运行jar有一个问题,运行的时候会弹出一个cmd窗口,并且不能关闭,关闭的话程序就停止了。

spring官方推荐使用winsw来将springboot项目作为服务运行,参考https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#deployment-windows。

使用

下载地址:https://github.com/winsw/winsw/releases

winsw的使用比较简单。从github上下载:winsw下载,要下载的文件有两个:1.winsw.exe程序;2.xml配置文件。

下载后将winsw执行程序和xml改成同样的名字,比如使用项目名+Service的命名方式。

例如:WinSW.NET4.exe改成 myProjectService.exe,sample-minmal.xml 改成myProjectService.xml。

编辑myProjectService.xml文件

内容如下:

<configuration>
<id>myProjectService</id>
<name>myProject</name>
<description>接口中转服务</description>
<executable>C:\Java\jre-18\bin\java.exe</executable>
<arguments>-jar -Dserver.port=18080 -Xms128m -Xmx512m myProjectService-0.0.1-SNAPSHOT.jar</arguments>
</configuration>

安装执行服务

执行命令:

myProjectService.exe install

启动服务

执行命令:

net start myProject

停止服务

执行命令:

net stop myProject

删除服务

删除服务:

myProjectService.exe uninstall

最后

上面所有的命令都可以写在批处理文件中,部署的时候就可以实现一键部署了。

将命令写在批处理文件中,希望将批处理文件默认为管理员权限打开,可以在批处理文件的开头写上:

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit

cd /d "%~dp0"