Java命令行启动jar包更改默认端口以及配置文件的几种方式
java -jar xxx.jar --server.port=8081
默认如果jar包没有启动文件,可以采用这种方式进行启动
java -jar xxx.jar --spring.profiles.active=dev
- 这种方式,你打的jar包里得有application-dev.properties或application-dev.yml这类资源文件
- 使用 "
--spring.profiles.active
" 参数,搭配@Profile注解,可以实现不同环境下(开发、测试、生产)配置参数的切换
根据文档描述,我们除application.properties外,还可以根据命名约定(命名格式:application-{profile}.properties)来配置,如果active赋予的参数没有与使用该命名约定格式文件相匹配的话,app则会默认从名为application-default.properties 的配置文件加载配置。
如:`spring.profiles.active=hello-world,sender,dev` 有三个参数,其中 dev 正好匹配下面配置中的application-dev.properties 配置文件,所以app启动时,项目会先从application-dev.properties加载配置,再从application.properties配置文件加载配置,如果有重复的配置,则会以application.properties的配置为准。
(配置文件加载顺序详见官方文档:24. Externalized Configuration)
如此,我们就不用为了不同的运行环境而去更改大量的环境配置了(此处,dev、pro、test分别为:开发、生产、测试环境配置)
java -jar xxx.jar --spring.config.location=/data/java/application.properties 或 java -jar xxx.jar --spring.config.location=/data/java/application.yml
指定加载某个资源文件,也可以使用相对路径
java -jar xxx.jar --spring.config.location=/data/java/application.properties -Dserver.port=8081 -Dserver.address=127.0.0.1
扩展,你加载的指定配置文件里的有server.port和server.address配置项
例如:
我工程里有mapper/xxx.xml数据库CRUD接口映射文件,我编译后的目录文件其实是在target/classes/mapper/xxx.xml
当我使用指定资源配置文件启动的时候,由于我指定的配置文件里配置的 mapper-locations: classpath:mapper/*. xml是这样的加载路径,调试运行时没问题,但是在编译后的目标目录里启动时,就会因为路径不对而导致启动失败。
如果我这样启java -jar xxx.jar --spring.config.location=./classes/application.yml
下面一定会报mybatis-plus相关的一些错误,例如找不到映射文件之类的
那,如果我这样启java -jar xxx.jar --spring.config.location=./classes/application.yml -Dmybatis-plus mapper-locations=./classes/mapper
就能正常加载资源配置文件并启动成功,其他配置项的加载道理也一样。