切换数据库连接配置
编写不同环境的配置文件
1.在pinyougou-dao工程中src/main/resources下创建filter文件夹
2.在filter文件夹下创建db_dev.properties ,用于配置开发环境用到的数据库
envir.jdbc.driver=com.mysql.jdbc.Driver envir.jdbc.url=jdbc:mysql://localhost:3306/pinyougoudb?characterEncoding=utf-8 envir.jdbc.username=root envir.jdbc.password=root |
3.在filter文件夹下创建db_pro.properties,用于配置生产环境用到的数据库
envir.jdbc.driver=com.mysql.jdbc.Driver envir.jdbc.url=jdbc:mysql://localhost:3306/pinyougoudb_pro?characterEncoding=utf-8 envir.jdbc.username=root envir.jdbc.password=root |
4.修改properties文件夹下的db.properties文件
jdbc.driver=${envir.jdbc.driver} jdbc.url=${envir.jdbc.url} jdbc.username=${envir.jdbc.username} jdbc.password=${envir.jdbc.password} |
定义Profile
<!-- install -P pro/dev 安装 pro环境/dev环境的 properties配置文件 package -P pro/dev 打包 pro/dev 环境的 properties --> 配置默认install/package使用的properties文件,如运行package (-P pro)命令时,不指定-P pro时默认使用这个配置, --> <properties><!--默认使用的properties文件配置--> <env>dev</env> </properties>
<profiles> <profile> <id>dev</id> <properties> <env>dev</env> </properties> </profile> <profile> <id>pro</id> <properties> <env>pro</env> <!-- 可以使用<en>pro</en>标签,但是需要在下面的filter路径中改为${en},否则找不到 --> </properties> </profile> </profiles> |
资源过滤与变量替换
修改pom.xml ,在build节点中添加如下配置
<build> <!-- 定义过滤器 ,指定过滤资源的地址--> <filters> <filter>src/main/resources/filters/db_${env}.properties</filter> <!-- 这里的${env}中的名称env必须与上面配置的默认的properties中的标签名env相同,否则报错,可以与上面的默认properties配置下面各个环境下的 <env>标签不同名,不同名时(即不是env时)即使通过package -P pro指定环境也会使用默认的properties配置,因为在默认propeties配置的下面的profiles中均为<env>标签的配置,找不到同名的 --> </filters>
<resources> <resource> <!-- 资源目录,下面的意思是在下面的资源目录下启用过滤 --> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> |
这里我们利用filter实现对资源文件(resouces)过滤
maven filter可利用指定的xxx.properties中对应的key=value对资源文件中的${key}进行替换,最终把你的资源文件中的username=${key}替换成username=value
打包
在pinyougou-dao 工程执行命令:package -P pro , 解压生成的jar包,观察db.properties配置文件内容,已经替换为生产环境的值。