MavenProfile
在我们平常的java开发中,会经常使用到很多配制文件(xxx.properties,xxx.xml),而当我们在本地开发(dev),测试环境测试(test),线上生产使用(product)时,需要不停的去修改这些配制文件,次数一多,相当麻烦。现在,利用maven的filter和profile功能,我们可实现在编译阶段简单的指定一个参数就能切换配制,提高效率,还不容易出错.
profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。
数据库连接配置
resources下创建filter文件夹
db_dev.properties
env.jdbc.driver=com.mysql.jdbc.Driver
env.jdbc.url=jdbc:mysql://localhost:3306/db_dev?characterEncoding=utf-8
env.jdbc.username=devUser
env.jdbc.password=123456
db_pro.properties
env.jdbc.driver=com.mysql.jdbc.Driver
env.jdbc.url=jdbc:mysql://localhost:3306/db_pro?characterEncoding=utf-8
env.jdbc.username=proUser
env.jdbc.password=123456
db.properties
jdbc.driver=${env.jdbc.driver}
jdbc.url=${env.jdbc.url}
jdbc.username=${env.jdbc.username}
jdbc.password=${env.jdbc.password}
pom.xml
<!-- 默认为dev -->
<properties>
<env>dev</env>
</properties>
<profiles>
<!-- dev开发环境 -->
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<!-- pro生产环境 -->
<profile>
<id>pro</id>
<properties>
<env>pro</env>
</properties>
</profile>
</profiles>
<build>
<!-- 放行的配置文件 -->
<filters>
<filter>src/main/resources/filters/db_${env}.properties</filter>
</filters>
<!-- 需要替换的配置文件路径 (db.properties)-->
<!-- 只要在这个路径下 使用到了db_${env}中的key的 都会替换成db_${env}中的value-->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
这里我们利用filter实现对资源文件(resouces) 过滤
maven filter可利用指定的xxx.properties(db_dev.properties/db_pro.properties )中对应的key=value对资源文件( db_properties )中的key进行替换,最终把你的资源文件中的username={key}进行替换,最终把你的资源文件中的username=key进行替换,最终把你的资源文件中的username={key}替换成username=value执行命令:package -P pro , 解压生成的jar包,观察db.properties配置文件内容,已经替换为生产环境的值。
注册中心zookeeper连接配置
spring.xml
<dubbo:registry protocol="zookeeper" address="${address}"/>
dubbox_dev.properties
env.address=192.168.25.135:2181
dubbox_pro.properties
env.address=192.168.25.136:2181
dubbox.properties
address=${env.address}
pom.xml
<properties>
<env>dev</env>
</properties>
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<env>pro</env>
</properties>
</profile>
</profiles>
.............................
<build>
<filters>
<filter>src/main/resources/filters/dubbox_${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>