Maven Profile 环境配置

在开发过程中,最少包括三个环境,分别是开发环境,测试环境以及生产环境,即对应三个配置文件(这里以*.yml为例,*.properties 同理),分别为:
application-dev.yml 开发
application-uat.yml 测试
application-prod.yml 生产

这里有一个小的地方需要注意一下:配置文件名中是中划线“-”,而不是下划线“_”,这里踩过坑,而且问题很难定位。

通过在Maven pom.xml 进行两步配置 可以灵活选择对应的环境。

  1. profile 配置
<profiles>

		<profile>
			<id>dev</id>
			 <activation>
                 <activeByDefault>true</activeByDefault>
             </activation>
			<properties>
				<build.profile.env>dev</build.profile.env>
			</properties>
		</profile>

		<profile>
			<id>uat</id>
			<properties>
				<build.profile.env>uat</build.profile.env>
			</properties>
		</profile>

		<profile>
			<id>prod</id>
			<properties>
				<build.profile.env>prod</build.profile.env>
			</properties>
		</profile>

	</profiles>

其中<activation> <activeByDefault>true</activeByDefault> </activation> 是控制默认的环境,本人一般注释,喜欢手动选择。
第一步配置完成后,在maven project 窗口中reimport 一下, 可以看到窗口中的profile的选项,如下图所示:
profile 选项
2.plugin 配置
profile配置完之后,一定不要忘了配置maven-antrun-plugin,此插件的作用是将application-* .yml配置文件中的配置信息中拷贝到application.yml中,因为运行时只认application.yml,而不认application- *.yml, 所以这里需要一步整合操作,将用户的配置拷贝到框架中规定的application.yml中。插件配置如下:

<plugin>
				<artifactId>maven-antrun-plugin</artifactId>
				<executions>
					<execution>
						<phase>compile</phase>
						<goals>
							<goal>run</goal>
						</goals>
						<configuration>
							<target>
								<move file="${project.build.directory}/classes/application-${build.profile.env}.yml"
									  tofile="${project.build.directory}/classes/application.yml"/>
							</target>
						</configuration>
					</execution>
				</executions>
			</plugin>

至此,整个配置就完成了。大家通过maven打包或者编译之后,可以去target/classes 下看一看有什么变化。如果在打包过程中选择的是uat, 会发现target/classes 文件下没有application-uat.yml文件,其他的dev,prod依然存在,取而代之的是application.yml文件,打开此文件发现与application-uat.yml内容一样,其实这一步就是上述步骤2的结果。

猜你喜欢

转载自blog.csdn.net/hongyinanhai00/article/details/106312874