作者 | 时间 |
---|---|
雨中星辰 | 20190523 |
背景
项目在开发中,有多种环境,之前每次在不同的环境部署都要修改一次配置文件,觉得十分麻烦,而且修改配置文件,不小心很容易出错,就想到了使用maven和springboot的多环境配置。
但是经过研究发现,springboot的多环境只能配置springboot的配置文件,但是在我的项目中除了springboot的配置文件还有其他的文件,故使用maven的多环境配置完成本次需求。
方法
1. 在resource根据不同的环境建立不同的目录,将该环境的配置文件放入目录中。
2. 配置profile
<profiles>
<!--本地开发环境-->
<profile>
<id>ys</id>
<properties>
<profiles.active>ys</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--冀北环境-->
<profile>
<id>jb</id>
<properties>
<profiles.active>jb</profiles.active>
</properties>
</profile>
<!--四川环境-->
<profile>
<id>sc</id>
<properties>
<profiles.active>sc</profiles.active>
</properties>
</profile>
<!--天津环境-->
<profile>
<id>tj</id>
<properties>
<profiles.active>tj</profiles.active>
</properties>
</profile>
</profiles>
3. 资源配置
<build>
<!--为了区分打包的环境,在报名后加入了环境名-->
<!--打包后的名称为:zeus-admin-2.1-fj.jar-->
<finalName>${project.artifactId}-${project.version}-${profiles.active}</finalName>
<resources>
<resource>
<directory>src/main/java</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
<!--指定要包含的文件-->
<includes>
<include>banner.txt</include>
<!--包含static的目录下的所有文件-->
<!--一个*指:所有子文件,两个*指:"子"文件与"孙"文件-->
<include>static/**</include>
</includes>
<!-- 资源根目录排除各环境的配置,使用单独的资源目录来指定 -->
<excludes>
<exclude>hn/**</exclude>
<exclude>jb/**</exclude>
<exclude>local/**</exclude>
<exclude>sc/**</exclude>
<exclude>tj/**</exclude>
<exclude>ys/**</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources/${profiles.active}</directory>
<!--是否替换资源中的属性-->
<filtering>true</filtering>
</resource>
</resources>
</build>
#4.打包
mvn clean package -DskipTests -P ${profiles.active}
例:mvn clean package -DskipTests -P ys
注意:一定要加clean,否则可能会将其他环境的配置文件打包进去,虽然不影响程序的使用,但是不太好。