假设有三个配置文件:
application.yml、application-local.yml、application-prod.yml
当使用本地环境配置文件时,并且在本地运行代码读取配置文件。
当使用生产环境配置文件时,springboot项目打jar时不带上配置文件
如图是分别带上配置文件的jar和不带配置文件的jar。
首先在pom文件中添加两个profiles:
<profiles> <profile> <id>local</id> <build> <resources> <resource> <directory>src/main/resources</directory> </resource> </resources> </build> </profile> <profile> <id>prod</id> <build> <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>application.yml</exclude> <exclude>application-local.yml</exclude> <exclude>application-prod.yml</exclude> <!-- 其他需要排除的配置文件 --> </excludes> </resource> </resources> </build> </profile> </profiles>
这个意思就是在不同的环境下选择是否要排除配置文件。
当在local环境下打jar时,Profiles选择local,这样就会带上配置文件,并且本地可以正常运行和读取配置文件。
当在prod环境下打jar时,Profiles选择prod,这样不会带上配置文件,本地不能运行和且不会读取配置文件,一般选择prod时都是部署到服务器使用。
注意:当选择不同环境时,application.yml里面的也要更改。
spring: profiles: active: local
最后是当部署在服务器上时,如何指定读取配置文件,下面给出具体命令示例:
sudo -u root nohup /usr/bin/java -jar -Dspring.config.location=file:/www/wwwroot/springboot/library/config/application.yml /www/wwwroot/springboot/library/library-serve-0.0.1-SNAPSHOT.jar --server.port=18080 >> /tmp/7ZOW24MX4K.log 2>&1 &
1. -Dspring.config.location=file:/www/wwwroot/springboot/library/config/application.yml
指定配置文件路径,且必须放在指定jar包路径前
2. /www/wwwroot/springboot/library/library-serve-0.0.1-SNAPSHOT.jar
指定jar包路径
3. --server.port=18080
指定项目运行端口
这便是springboot项目读取外置配置文件的简易方法。