MavenProfile 只和打包有关系
MavenProfile可以进行自由切换配置文件。
当开发,测试,内测,公测,上线这些环境用的数据库,redis,mq,zookeeper,fastDFS等地址都是可能变化的。
开发人员要给每一个环境进行打包布署。要不判断修改配置文件。使用MavenProfile解决配置文件的切换问题
MavenProfile的使用原则:
有几个环境,就写几套配置文件。
使用方式如下:
pom.xml
<project>
<parent></parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<artifactId>pyg-common</artifactId>
<profiles>
<profile>
<id>dev</id>
<properties>
<db>dev</db>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<db>pro</db>
</properties>
</profile>
</profiels>
<dependencies>
......
</dependencies>
<build>
<filters>
<filter>src\main\resources\profile\db_${db}.properties</filter>
</filters>
<resource>
<directory>src\main\resources</directory>
<filtering>true</filtering>
</resource>
</build>
</project>
src\main\resources:
src\main\resources\profile:
db_dev.propertis
db.jdbc.driver=com.mysql.jdbc.Driver
db.jdbc.url=jdbc:mysql://localhost:3306/db1
db.jdbc.username=root
db.jdbc.password=root
db_pro.propertis
db.jdbc.driver=com.mysql.jdbc.Driver
db.jdbc.url=jdbc:mysql://localhost:3306/db2
db.jdbc.username=root
db.jdbc.password=root
src\main\resources\jdbc:
applicationContext.xml
......
......
执行流程:
1.启动maven的打包命令,并指定属性文件的ID, package -P dev ,读取到了<id>dev</id>所对应的profile中的properties,并将properties中的key/value加载到属性文件中
2.pom.xml继续往下执行到build标签,找到过滤器标签,使用属性文件中的key/value替换db_${db}.properties中的${db}为db_dev.properties;并读取db_dev.properties中的key/value再次存入属性文件中
3.继续往下执行,读取到<resource></resource>标签所指定的需要被属性文件中的ke/value替换的目录;对<directory>标签指定的目录下的所有资源进行过滤,只要指定目录下出现了属性文件中对应的key,就将其替换;如果指定目录下有${}表达式,但是${}表达式中的key并不存在于属性文件中,属性文件就不对它进行任何处理