公司的项目每天需要从客户那边拿数据,公司在客户的电脑部署了一个springboot的项目,通过调用接口将数据上传到公司的服务器。但是客户那边经常关机导致项目关闭,需要重新部署非常的麻烦。于是我想到将项目部署的jar包做成windows服务,想到就做,通过查阅csdn,我解决了该问题,但有些文章的错误也让我浪费了很长的时间。所以有了这篇文章......
借鉴文章链接:
使用winsw将springboot打包的jar注册系统本地服务 - 大墨垂杨 - 博客园 (cnblogs.com)
(10条消息) 把Jar包程序变成一个windows服务,随开机启动_lihongtai的专栏-CSDN博客
1.下载WinSW
这里我选择的版本是v2.10.3 ,下载sample-minimal.xml和WinSW.NET4.exe即可
下载地址:Releases · winsw/winsw · GitHub
2.把项目打成jar包(在idea通过maven将项目打成jar包)
通过maven的package将项目打成jar包
在项目文件夹中找到打包生成的jar包
3.将三个文件放入同一个文件夹
4.修改文件名
实践,文件名中存在" . "对服务的创建没有影响
5.修改xml文件内容
<configuration>
<!--安装成Windows服务后的服务名-->
<id>kettleUpload</id>
<!--显示的服务名称-->
<name>kettleUpload</name>
<!--对服务的描述-->
<description>kettle数据上传服务</description>
<!-- java环境变量 -->
<env name="JAVA_HOME" value="%JAVA_HOME%"/>
<!--这里写java的路径,如何配置了环境变量直接写"java"就行-->
<executable>java</executable>
<!---jar后面的是项目名,可以配置内存限制如-Xmx256m代表堆内存最大值为256MB -->
<arguments>-jar D:/MyApp/kettle-upload-1.0-SNAPSHOT.jar</arguments>
<!-- 开机启动 Automatic为自动,可以设置为其他模式-->
<startmode>Automatic</startmode>
<!-- 日志配置 -->
<logpath>%BASE%\log</logpath>
<logmode>rotate</logmode>
</configuration>
<arguments>-jar D:/MyApp/kettle-upload-1.0-SNAPSHOT.jar</arguments>
标红的地方千万千万不要用" "括起来,否则就会报下面的错误,我为什么写这篇文章就是因为这个问题。花了我一个上午的时间,整个csdn关于这一段全是用""括起来的。艹(一种植物)
6.通过命令对服务进行安装,启动,卸载
安装
// XXX.exe install
kettle-upload-1.0-SNAPSHOT.exe install
启动(需要管理员权限)
//net start 服务名
net start kettleUpload
卸载(需要管理员权限)
//sc delete 服务名
sc delete kettleUpload
可以将安装和卸载的命令写成bat文件
-
创建一个bat文件安装windows服务,install.bat
@echo on
:color 2f
mode con: cols=80 lines=25
:@echo 请按任意键开始安装后台服务...
:pause
cd /d %~dp0
kettle-upload-1.0-SNAPSHOT.exe install
net start kettleUpload
:pause
exit
-
创建一个bat文件卸载windows服务,uninstall.bat
@echo on
color 2f
mode con: cols=80 lines=25
:@echo 请按任意键开始卸载后台服务...
:pause
cd /d %~dp0
net stop kettleUpload
kettle-upload-1.0-SNAPSHOT.exe uninstall
pause
最后MyApp文件夹内容
7.安装,启动后查看服务
安装完毕后,还是重启一下电脑,看一下服务有没有自己启动
本文章使用的是WinSW方法,其他方法推荐: