springboot 不同环境切换不同的配置文件
开发的流程是本地>测试>预发布>正式,所以不同的环境,肯定是不同的配置文件,所以我们需要针对不同的环境做不同的配置切换.
下面我们来说说 springboot 是怎么来切换的:
1、package 方式使用 war,应用部署到 tomcat
先来看一下文件结构,
可以看到,这里我们有 3 个 properties 的配置文件,还有 1 个 application.yml文件,这个文件里有一个参数 spring.profiles.active 的选项,这个用来激活不同环境的配置.
然后重点是看下面 pom.xml 的配置,如下:
<profiles> <profile> <id>dev</id> <properties> <profileActive>dev</profileActive> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>test</id> <properties> <profileActive>test</profileActive> </properties> <activation> <activeByDefault>false</activeByDefault> </activation> </profile> <profile> <id>pro</id> <properties> <profileActive>pro</profileActive> </properties> <activation> <activeByDefault>false</activeByDefault> </activation> </profile> </profiles> <build> <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>application.yml</exclude> <exclude>application.properties</exclude> <exclude>application-dev.properties</exclude> <exclude>application-test.properties</exclude> <exclude>application-pro.properties</exclude> </excludes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>application-${profileActive}.properties</include> <include>application.yml</include> </includes> <filtering>true</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <delimiters>@</delimiters> <encoding>utf-8</encoding> <useDefaultDelimiters>false</useDefaultDelimiters> </configuration> </plugin> </plugins>
然后当你在构建项目的时候可以这样来写命令 mvn clean package -Dmaven.test.skip=true -P dev/test/pro(根据不同的环境来切换不同的变量值)
2、package 方式是 jar,服务器上使用 java -jar 命令来启动
pom.xml 里的 profiles 配置可以完全删除,还有 build 里这段配置也可以删除.
然后在项目启动的时候通过指定spring.profiles.active 参数来激活配置
nohup java -jar *.jar -dprocesName=templateDecoration --spring.profiles.active=test > /xxx/xxx/xxx.log &