在开发的过程中,经常需要面对不同的运行环境(开发环境、测试环境、准发布环境、生产环境等等),在不同的环境中,相关的配置一般是不一样的,比如数据源配置、用户名密码配置、以及一些软件运行过程中的基本配置。
使用Maven来进行构建可以达到不同环境构建不同的部署包。在maven中实现多环境的构建可移植性需要使用profile,通过不同的环境激活不同的profile来达到构建的可移植性。
1、工程pom.xml的配置
/**
这里定义了三个环境,local(本地环境)、dev(开发环境)、pro(生产环境),
其中开发环境是默认激活的(activeByDefault为true),这样如果在不指定profile时默认是开发环境
*/
<profiles>
<profile>
<id>local</id>
<properties>
//这里的env只是一个变量而已,名字可以由你任意来定,这个变量在后面有用到
<env>local</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<env>pro</env>
</properties>
</profile>
</profiles>
<build>
<finalName>mqConsumer</finalName>
<filters>
//${env}这个变量就是在前面定义过的
<filter>src/main/resources/filters/${env}.properties</filter>
</filters>
<resources>
<resource>
//对resources资源文件下的包含${}占位符的变量进行替换
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
2、各个环境的配置文件
local.properties
#activeMQ配置
brokerURL=tcp://192.168.1.55:61616
dev.properties
#activeMQ配置
brokerURL=tcp://115.29.173.120:61616
pro.properties
#activeMQ配置
brokerURL=failover://(tcp://115.29.173.121:61616,tcp://115.29.173.121:61617,
tcp://115.29.189.46:61616,tcp://115.29.189.46:61617)```
#### 3、待替换的配置文件(一般位于资源路径下)
config.propeties
#activeMQ brokerURL配置 brokerURL=${brokerURL}
#### 4、执行maven命令进行打包
//本地环境默认为激活模式,所以可不加-P参数 mvn clean package //dev环境 mvn clean package -Pdev //pro环境 mvn clean package -Ppro
//执行命令后,可以看到最后的部署包里面的配置文件配置就是对应环境需要的
ref:
[http://maven.apache.org/guides/introduction/introduction-to-profiles.html](http://maven.apache.org/guides/introduction/introduction-to-profiles.html)