项目一般上线过程中,都是用外部的配置文件,防止每次迭代更新时,都需要再次整理配置文件,比较麻烦。
一般我们项目中配置文件都是放在这样的目录下,当然有可能你没有config文件夹,效果是一样的。
此时我们进行maven打包,或者本地调试是没有问题的。但是如果我们不做处理,直接打包部署到测试环境或者生产环境,部署文件就在war包或者jar包内了,修改一些相关配置比较麻烦,而且每次迭代都需要备份原来的,在还原,用起来很难受。
因此我们需要更希望使用外部配置文件,这样每次直接更新部署包,重启服务即可。具体步骤如下:
1、修改application的启动类读取配置文件地址:
2、修改maven的pom.xml文件
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<excludes.configs></excludes.configs>
<log.level>DEBUG</log.level>
<log.charset>GBK</log.charset>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<excludes.configs>config/application.properties</excludes.configs>
<log.level>info</log.level>
<log.charset>UTF-8</log.charset>
</properties>
</profile>
</profiles>
<build>
<finalName>ics</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>
${excludes.configs}
</exclude>
</excludes>
</resource>
</resources>
<plugins>
<!--排除resources文件夹-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<warSourceExcludes>
${excludes.configs}
</warSourceExcludes>
</configuration>
</plugin>
</plugins>
</build>
如此我们在本地选择dev即可,生产或者测试打包选择prod即可。主要就是实现war包与jar包中不含有配置文件,因为这个包里面的配置文件优先级比外部高。
3、其他注意,有些时候我们需要在项目加载配置文件前使用配置文件中的配置,此时我们可以使用 Properties进行读取,大致如下