meitanzai

一. 问题由来

        开发环境、测试环境、生产环境--------我们的软件在不同的环境中,系统参数和配置可能会不一样,比如数据源配置、日志文件配置、以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件?Maven提供了一种方便的解决这种问题的方案,就是profile功能。

二. Maven实现多环境配置切换的步骤

2.1 定义多环境配置文件

按照不同环境,我们读取不同的配置文件,假设有以下定义:

profile 文件名 配置文件内容
dev application-dev.yml server.port 8090
test application-test.yml server.port 8091
prod application-prod.yml server.port 8092

 

完成后目录结构如下图所示

 

 

 

2.2 定义运行参数

根据Spring Boot规范,我们修改application.yml文件添加以下内容

 

2.3 修改Maven pom配置

修改父工程pom.xml文件,添加以下配置


    
<!--profile配置-->
<profiles>
<profile>
<id>dev</id>
<activation>
<!--默认开启dev配置-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profileActive>dev</profileActive>
</properties>
</profile>

<profile>
<id>test</id>
<properties>
<profileActive>test</profileActive>
</properties>
</profile>

<profile>
<id>prd</id>
<properties>
<profileActive>prd</profileActive>
</properties>
</profile>
</profiles>

<!--编译配置-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>

<!--Resource文件编译配置-->
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>application*.yml</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>application-${profileActive}.yml</include>
<include>application.yml</include>
<include>logback.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>

 

pom多环境配置中我们的核心是利用编译过程中,读取不同的配置文件,然后再由spring去读取参数配置。而这里我们利用到变量${profileActive}

 

2.4 启动项目以验证

按照以上操作步骤完成后:

1.在开发过程中,我们可以在Maven视图选择你当前的profile。

然后运行,例如当前dev环境配置的系统运行端口是8089。那么启动控制台打印如下信息则表配置成功。

 

 2.在实际生产环境发布的时候,我们运行一下命令即可

 

mvn clean package -dev

相关文章: