在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。
内容如下:
<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"
参考资料
许可协议
本文采用 署名-非商业性使用-相同方式共享 4.0 国际 许可协议,转载请注明出处。