一、后端jar包部署

1、idea打jar包

1)方式一:使用maven打包(最常用、最方便)

如下图,依次点击项目生命周期的clean–>package
在这里插入图片描述
完成后,即可在项目包含启动类的模块下、target包中找到jar包
在这里插入图片描述

2)方式二:不使用maven打jar包

在项目结构project stucture中的Artifacts中,添加jar–>from modules;选择要打包的模块(带有启动类的模块),选中启动类
在这里插入图片描述
这里选中MANIFEST.MF路径时,不能选到src\main\java下,不然打出的jar包启动会报“jar中没有主清单属性”;要选到src目录下
在这里插入图片描述
配置好以后,如下图,记住地址等会jar包就放在这个地址下
在这里插入图片描述

在build–>build artifact打包刚才设置的jar在这里插入图片描述
完成后,在刚才配置的地址就可以看到目标jar包了
在这里插入图片描述

2、windos本地测试jar包是否可以正常启动

1)普通启动

在jar包所在的目录,启动cmd;
在这里插入图片描述
输入项目启动命令(需要配置java变量全局可用):
java -jar xxx.jar
在这里插入图片描述
启动成功
在这里插入图片描述

2)后台启动jar包

普通启动,关闭控制台后,项目就自动关闭了;
如何使得项目,即使关闭控制台、项目仍然可以运行呢?

很简单,改一下启动命令就可以,采用后台启动的方式启动项目(这个启动方式,也适用启动要部署在linux服务器的项目)

后台启动java项目的命令:
nohup java -jar xxx.jar &

nohup是linux命令,不是Windows命令,windows环境无法使用nohup后台启动jar包,会报:
‘nohup’ 不是内部或外部命令,也不是可运行的程序
在这里插入图片描述

二、部署相关问题汇总

1、windows环境启动项目报端口被占用

1)先排查占用端口的服务pid
cmd输入

netstat -ano | findstr "端口号"
eg:netstat -ano | findstr "8088"

2)拿pid查对应的服务是什么
方法一:cmd输入

tasklist | findstr pid

方法二:通过“任务管理器” -> “服务”查看
在这里插入图片描述
3)确定服务是否可关闭,执行关闭
方法一:根据进程号关闭服务
cmd输入

taskkill /T /F /PID pid

方法二:根据服务名关闭服务

taskkill /f /t /im "java.exe"

方法三:通过任务管理器 -> 服务 -> (右键)关闭

三、SpringBoot配置环境变量

1、场景

开发和生产环境,有很多参数不一样,那些参数值在配置文件中的参数,最好分开配置,否则每次上线都需要改来改去、很麻烦,也容易出错。
springboot可以通过环境变量的配置,方便的切换配置文件。

2、配置

1)springboot配置文件加载顺序

第一步,加载类路径->config文件夹->子文件夹(如果有)->application-{profile}.properties/yml
在idea代码,就是resources下的config的子文件夹下的application-{profile}.properties/yml

第二步,加载类路径->config文件夹->application-{profile}.properties/yml
在idea代码,就是resources下的config的application-{profile}.properties/yml

第三步,加载类路径->application-{profile}.properties/yml
在idea代码,就是resources下的application-{profile}.properties/yml
在这里插入图片描述
在这里插入图片描述
同路径下,properties文件优先于yml文件;
application-{profile}文件优先于application文件。

对以上做一个总结,总体如下图:
在这里插入图片描述

2)环境配置的本质

通过1)中springboot配置文件加载顺序的说明,可以知道,生产、开发配置文件(一般写作application-prod,application-dev),只要放在recourse下,springboot就都会加载到,区别只是加载顺序不同;

而我们的目标,是让springboot按照我们的要求,加载对应的配置文件(同时不加载未配置的文件)
即,所谓配置环境变量profile,就是告诉spring启动的时候,以哪配置个文件的数据为准。

补充:配置文件一般命名为application-{profile},这个{profile}一般以dev、test、prod分别代表开发、测试、生产,但是如果你愿意,把profile命名为local、abc、xxx也可以,但建议还是做到见名知义。

3)实际配置(示例)

在application.yml/properties,配置环境变量(方式之一):

# 配置环境变量
spring:
  profiles:
    active: dev

application里边,还可以放一些生产、开发环境都一样的变量,比如

com:
  shop:
  	# 项目名词
    name: xx公司-商城系统
    # 版本号
    version: 1.0.0
    # 获取ip地址开关
    addressEnabled: false
    # 验证码类型 math 数字计算 char 字符验证
    captchaType: math

生产(application-prod)、测试(application-test)、开发(application-test)配置,就是普通的参数配置,比如数据源、redis、七牛云参数等等。

4)启动

做好上面的环境变量配置,idea启动就会自动按application环境变量配置加载文件了;

那要放到测试环境部署的jar包,打包前还要改环境变量配置吗?
不需要,只要设置好jar包启动命令即可:

# 启动jar包命令,指定配置文件
nohup java -jar xxx.jar --spring.profiles.active=test &

同理,生产上线,也是提前设计好启动脚本即可,同一个jar包就可以在不同环境启动、并启用对应的配置参数值。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐