一、生成可运行的jar包
1、在上文整合好的SpringBoot项目中,设置packaging属性值为jar
<groupId>com.xxx</groupId>
<artifactId>codebox</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>codebox</name>
<description>App For codebox</description>
2、选中项目,右键-》Debug As-》Debug configurations
3、在弹出框中,点击Maven Build,右键-》new Configurations,在Name属性中填写任意名称,点击workspace选择需要生成jar的项目,在Goals中设置目标为package,即打包成jar,如果需要,可以点击JRE选择对应JRE版本
4、设置完成,点击Debug确认生成jar,编译器命令行输出如图所示内容,说明执行成功,刷新项目,即可在项目target
文件夹下生成.jar文件,如果一次执行不成功,可多运行几次
二、将jar包做成后台服务
1、Linux系统下
在Linux设备上后台启动SpringBoot项目只需要一条命令:nohup sh run.sh &,run.sh脚本包含了启动SpringBoot项目的命令,由于过于简单,就不再做详细说明
2、windows系统下
由于windows系统下直接使用java -jar指令直接运行,可以使用CTRL+C打断程序运行,或当命令行窗口被关闭时,程序直接退出的现象,试了很多种方式都没有达到理想的结果,后来发现spring官方推荐使用winsw来将springboot项目作为服务运行,参考https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#deployment-windows。详细步骤如下
(1)下载winsw
1)从github上下载:winsw下载地址,需要使用的文件主要有WinSW.NET4.exe(WinSW.NET2.exe也行)和sample-minimal.xml。
2)下载完成后,将下载的两个文件及springboot项目的jar包放在同一个文件夹中,将winsw执行程序跟xml改成跟jar相同的名字,推荐使用项目名+Service的命名方式,比如:WinSW.NET4.exe改成projectNameService.exe,sample-minmal.xml改成projectNameService.xml。
3)编辑projectNameService.xml文件,为方便使用,此处我使用批处理文件运行jar包,并命名为start.bat
(注:考虑电脑未配置JAVA_HOME的情况,此处首先设置java环境(需自带jdk或jre),如果已配置则不需要)
start.bat
set path=%cd%\jdk1.8.0_171\bin;%path%
java -jar %cd%\codebox.jar
pause
<configuration>
<!-- 安装的服务名称-->
<id>项目名称</id>
<!-- 显示的服务名称 -->
<name>项目名称</name>
<!-- 服务描述 -->
<description>服务描述</description>
<!-- 可执行程序路径,如果是jar这里写Java的路径(如果配置了环境变量,直接写“java即可”) -->
<!--
<executable>/Java/jar8/bin/java.exe</executable>
<arguments>-jar 项目名称.jar</arguments>
-->
<executable>start.bat</executable>
<logmode>rotate</logmode>
</configuration>
4)到此完成配置,然后就是安装并运行服务,可以使用命令行进行到目标目录,
执行指令 项目名称.exe install 安装服务,
安装服务成功后,通过命令:net start 项目名称(服务ID),启动服务,
不过为了方便管理,此处我依旧使用批处理文件对其进行管理,主要内容有
主要指令有:
a、设置管理员模式执行:
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"
b、安装服务:
xxx.exe install
c、启动服务
net start xxx
d、停止服务
net stop xxx
e、卸载服务
xxx.exe uninstall
f、删除服务
sc delete xxx
在执行过程中可通过,services.msc命令进入到服务界面,观察对应服务的状态变化情况,对服务进行手动操作等,就跟正常服务没什么区别
至此,再也不担心SpringBoot部署的问题了,也完美发挥了SpringBoot内嵌容器的优势