分两个场景进行阐述:
一、单工程
通常分为开发环境(dev)和生产环境(prod)。让我们开始吧!
1、在src/main/resources/下面创建两个文件application-dev.yml,application-prod.yml。两个文件里面分别写开发和生产环境的配置参数,如:
2、所有程序需要的配置参数已经写到配置文件里面了,那么原来的application.yml就不能再写这些配置参数了。它的作用是要指定编译打包时读取哪个配置文件,因此只要写入:
表示读取application-dev.yml。如果把dev改成prod则表示读取application-prod.yml。这样就实现了不同环境的打包方案。
二、多个子工程时如何实现
1、在子工程的application.yml里面配置个性化的部分,如:
公共部分如mysql数据库参数配置项放到公共的配置文件application-common.yml文件里面。编译打包时为了加载它,就要在application.yml里面加上一句:spring.profiles.include=common,(yml的写法请自行转换)。
2、再来看application-common.yml怎么个写法,通常可以把mysql配置参数、redis配置参数、oss、sms等共同需要的配置写在里面。然而我们同样需要分开发、测试、生产等多个环境,不同环境配置参数取值是不同的,所以这里只写入一句:[email protected]@,(yml的写法请自行转换),这里的environment是变量,它会被dev、test、prod替换,怎么替换后面再说。
3、再创建不同环境对应的配置文件:application-dev.yml、application-test.yml、application-prod.yml。common文件里面的environment变量值会决定加载那个文件。
4、像mysql,redis等公共配置参数可以写到application-common.yml文件里面,参数值用变量,如下:
加载时从dev或者test或者prod的yml文件读取,如dev的yml内容:
5、至此就可以通过maven命令来给不同环境编译打包了。为了更方便,要把不同环境的打包命令写到脚本里面,如下:
脚本内容参考如下:
可以看到-Pprod就是environment的值。