需求:有时候,我们在开发和部署的时候,有很多配置文件数据是不一样的,比如连接mysql,连接redis,一些properties文件等等,每次部署或者开发都要改配置文件太麻烦了,这个时候,就需要用到maven的profile配置了。
1.在项目下pom.xml的project节点下创建了开发环境和生产环境的profile
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<build.profile.id>dev</build.profile.id>
</properties>
</profile>
<profile>
<id>prd</id>
<properties>
<build.profile.id>prd</build.profile.id>
</properties>
</profile>
</profiles>
其中id代表这个环境的唯一标识,下面会用到。
properties下我们我们自己自定义了标签env,内容分别是dev和prd。
activeByDefault=true代表如果不指定某个固定id的profile,那么就使用这个环境。
2.下面是项目的根目录,新建 dev.properties和prd.properties
在开发时,我们使用dev下的配置文件,部署时候使用prd下的配置文件
dev.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/study?characterEncoding=utf-8&useSSL=false
jdbc.username= root
jdbc.password= admin123
prd.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/study?characterEncoding=utf-8&useSSL=false
jdbc.username=prd
jdbc.password=prd
3.项目中使用环境的变量
db.properties
jdbc.driver=${jdbc.driver}
jdbc.url=${jdbc.url}
jdbc.username=${jdbc.username}
jdbc.password=${jdbc.password}
applicationContext.properties
<!-- 加载db.properties -->
<context:property-placeholder location="classpath:db.properties" />
<!-- 1.配置数据源(c3p0数据库连接池) -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 基础配置 -->
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="driverClass" value="${jdbc.driver}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
4.配置pom.xml
如果直接install,那么就会找到默认的id为dev的这个profile,然后会在里面找env的节点的值,接着就会执行替换,相当于将src/main/resources这个文件夹下的所有的配置文件打包到classes根目录下。
<build>
<finalName>springmvc_demo</finalName>
<filters>
<filter>src/anti_${build.profile.id}.properties</filter>
</filters>
<sourceDirectory>src/main/resources</sourceDirectory>
<!--定义打包资源文件-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
5.执行mvn clean install –P dev/mvn clean install –P prd
可以看到db.properties和applicationContext.xml中的值被替换