Java项目多环境配置
一、使用Maven方式
比较正式分:
本地环境(localhost)、开发环境(development) 、测试环境(test)、生产环境打包(production)。
不过我个人喜欢分三类:
本地环境(开发环境)(local)、测试环境(dev)、生产环境(prod)。
在平常开发的过程中,我们的项目配置文件经常有有几套分别对应自己本地的环境、开发环境、测试环境、以及生产环境。因为在不同的环境中项目的相关配置也会有相关的不同,我们在不同的环境中部署就要手动修改为对应环境的配置,这样太麻烦了以及这样也会很容易出错。
目前JAVA相关的项目基本都是使用Maven来进行构建。在maven中实现多环境的构建可移植性需要使用profile,通过不同的环境激活不同的profile来达到构建的可移植性。
接下来我们就通过maven的相关配置来在打包时指定各个环境对应配置文件。
第一步 pom文件中的profile
首先时pom文件中profile配置
<project>
<!--....其他包-->
<!-- Maven控制Spring Profile -->
<profiles>
<profile>
<!-- 本地开发环境 -->
<id>local</id>
<activation>
<!-- 设置默认值-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profileActive>local</profileActive>
</properties>
</profile>
<profile>
<!-- 测试环境 -->
<id>dev</id>
<properties>
<profileActive>dev</profileActive>
</properties>
</profile>
<profile>
<!-- 生产环境 -->
<id>prod</id>
<properties>
<profileActive>prod</profileActive>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.mango.Application</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>application*.yml</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<!-- 是否替换@xx@表示的maven properties属性值 -->
<filtering>true</filtering>
<includes>
<include>application.yml</include>
<include>application-${profileActive}.yml</include>
</includes>
</resource>
</resources>
</build>
</project>
第二步 工程目录建立对应目录
多个环境创建多个者文件,一般application.yml 存放不变化(不分环境)的属性,其他文件存放对应环境的属。
因为maven的配置文件一般都是在src/main/resource目录下,所以我们在resource目录下面分别新建local、dev、prod这四个文件目录;如下图:
在resources目录下有一个application.yml文件,添加
spring:
profiles:
active: @profileActive@
项目编译
通过在运行maven命令时指定不同的profile即可构建不同环境需要的war包或发布到不同的环境了 。如:
mvn clean package -Pprod
这样我们就是打包生产环境的配置了。
如果我们是idea开发的话,我们可以不用些命令的方式
我们打开idea的maven窗口