1.使用场景
在我们实际工作中一个项目存在这多份的配置文件,比如我们在开发时候用的		
数据库,和在生产时使用不同的数据库,那么就造成了我们同一套代码连接数
据库的参数是不同的,我们开发完后就得将配置参数修改再提交给测试,测试
完毕再修改参数提交到生产,这样来回的改动配置文件非常的麻烦而且还不安
全。为了解决这个问题所以就要给同一套代码多份配置文件,当在开发的时候
就自动的使用开发需要的配置文件,测试使用测试的配置文件,生成使用生成
的配置文件,相互不干扰,也不需要大量改动配置文件,而且比较安全。
2方式
有两种方式可以解决不同运行环境下使用不同配置文件的问题,一种是在工程	
构建打包阶段进行选择(当项目准备打包的时候,从多个配置文件中选择一个配置文件打包,项目中存在一个配置文件),另一种是在运行阶段进行选择(项目已经打包完毕,项目中这时存在多份配置文件,在运行程序的时候选择具体使用哪个配置文件)。我们在这里就只介绍第一种,在打包的时候就确认配置文件
工程构建时选择
  1. 创建一个maven项目目录结构如下

springmvc maven 多环境 springmvc多配置文件_配置文件


图中标红的4个地方为是我们重点去了解的

1是我们配置文件,中的内容如下方便我们做测试用

#测试数据
env.name=${env.name}

2是springmvc的配置文件,程序启动后将属性让spring去管理

<!-- 引入属性文件 -->
	<context:property-placeholder location="classpath:resource/*.properties" />

3是我们的生产,测试和开发时的真正配置
3.1 dev-env.properties内容如下,这是我们的开发环境,打包后env.name的值替换jdbc.properties中的env.name中的值

# 测试数据
env.name=dev

3.2 prod-env.properties内容如下,这是我们的生产环境,打包后env.name的值替换jdbc.properties中的env.name中的值

# 测试数据
env.name=prod

3.3 test-env.properties内容如下,这是我们的生产环境,打包后env.name的值替换jdbc.properties中的env.name中的值

测试数据
env.name=test
4.pom配置文件
<build>
	<!-- 打包应用名 -->  
    <finalName>klhealth</finalName>  
    
    <!-- 指定使用打包配置文件 -->
	<filters>
		<filter>environment/${env}-env.properties</filter>
	</filters>
	<!-- 配置需要被替换的资源文件路径 -->
	<resources>
		<resource>
			<directory>src/main/resources</directory>
			<includes>
				<include>**/*.properties</include>
			</includes>
			<filtering>true</filtering>
		</resource>
		<resource>
			<directory>src/main/resources</directory>
		</resource>
	</resources>
</build>
<!-- 多环境打包 -->
<profiles>
	<!-- 开发环境,默认激活 -->
	<profile>
		<id>dev</id>
		<properties>
			<env>dev</env>
		</properties>
		<activation>
			<activeByDefault>true</activeByDefault>
		</activation> 
	</profile>
	<!-- 测试环境 -->
	<profile>
		<id>test</id>
		<properties>
			<env>test</env>
		</properties>
	</profile>
	<!-- 生产环境 -->
	<profile>
		<id>prod</id>
		<properties>
			<env>prod</env>
		</properties>
	</profile>
</profiles>

在pom.xml配置完整后就可以做实验了,有一个前提是你的项目是可以使用 mvn package 打包的

写写2个测试类将env.name属性返回到页面上

springmvc maven 多环境 springmvc多配置文件_bc_02


springmvc maven 多环境 springmvc多配置文件_springmvc maven 多环境_03


做好测试类以后就可以进行打包了

1.使用eclipse进行打包

在你的项目名上或者是pom.xml上右键 Run as -->Maven bulid出现下图

springmvc maven 多环境 springmvc多配置文件_测试数据_04


执行run之后在你项目的target中就会出现你项目的war,将项目war放入tomcat中运行,

然后访问应用的地址调用测试接口,就会返回env.name的值,如果是测试的返回test,然后对项目重新打包测试其他环境时候正常

2maven命令打包

需要你的已经配置maven 的环境变量

打开命令行窗口cd到你的项目下,使用

mvn clean package -P test进行打包 -P后边跟着的是你要打包的环境名称,也可以是 dev,prod

执行之后再将war放入tomcat中测试