在程序开发完后,一般需要在专用的服务器上运行,因此需要将开发的程序打包,并在服务器上运行
程序打包
SpringBoot程序是基于Maven创建的,在Maven中提供有打包的指令,叫做package。本操作可以在Idea环境下执行。
mvn package
或
注:正常运行时会有一个test测试,如果程序中包含增删改的操作,会导致多出一些数据,为防止这些情况,可以在idea中选中test,点击上方的闪电按钮,表示跳过test
打包后会产生一个与工程名类似的jar文件,其名称是由模块名+版本号+.jar组成的。
程序运行
程序包打好以后,就可以直接执行了。在程序包所在路径下,执行指令。
java -jar 工程包名.jar
执行程序打包指令后,程序正常运行,与在Idea下执行程序没有区别。
注:
1.如果你的计算机中没有安装java的jdk环境,是无法正确执行上述操作的,因为程序执行使用的是java指令。
2.jar支持命令行启动需要依赖maven插件的依赖,因此打包时需要确保有SpringBoot对应的maven插件
SpringBoot程序打包失败处理
如图,使用阿里云创建SpringBoot工程时,默认会有下面的skip属性,其代表的是忽略当前插件,而该插件是打包插件,忽略后就会导致运行时出现“没有主清单属性”
打包时需要有下面的插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- SpringBoot程序添加配置后会打出一个特殊的包,包含Spring框架部分功能,原始工程内容,原始工程依赖的jar包
- 首先读取MANIFEST.MF文件中的Main-Class属性,用来标记执行java -jar命令后运行的类
- JarLauncher类执行时会找到Start-Class属性,也就是启动类类名
- 运行启动类时会运行当前工程的内容
- 运行当前工程时会使用依赖的jar包,从lib目录中查找
SpringBoot为了打出来的包能够独立运行,将所有需要使用的资源全部都添加到了这个包里。这就是为什么这个jar包能独立运行的原因。
命令行启动常见问题
可能会出现端口占用的问题
# 查询端口
netstat -ano
# 查询指定端口
netstat -ano |findstr "端口号"
# 根据进程PID查询进程名称
tasklist |findstr "进程PID号"
# 根据PID杀死任务
taskkill /F /PID "进程PID号"
SpringBoot项目快速启动(Linux版)
在Linux系统下
jar包一般放在HOME目录,或者根目录下的user目录下
之后使用相同指令即可启动
java -jar 工程包名.jar
注:需要Linux系统下有Java的jdk环境,且版本需要匹配
由于程序运行中需要访问数据库,且是从本地访问的,因此Linux系统中也需要有对应的数据库和数据