一. 问题由来
开发环境、测试环境、生产环境--------我们的软件在不同的环境中,系统参数和配置可能会不一样,比如数据源配置、日志文件配置、以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件?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 定义运行参数
而这里我们主要自定义了一个变量
2.3 修改Maven pom配置
<!--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去读取参数配置。而这里我们利用到变量
2.4 启动项目以验证
按照以上操作步骤完成后:
1.在开发过程中,我们可以在Maven视图选择你当前的profile。
然后运行,例如当前dev环境配置的系统运行端口是8090。那么启动控制台打印如下信息则表配置成功。
2.在实际生产环境发布的时候,我们运行以下命令即可切换到dev配置