1、profiles解决的问题
一般项目开发中,测试环境,开发环境,生产环境的参数都有所不同,甚至还有的系统会有演示环境,所以我们要根据不同环境下进行灵活地项目打包,profiles很好的解决了多环境参数切换的问题。
2、项目结构
依数据库配置为例,在不同配置文件里面有dev、test、prod三种不同的数据库参数配置
开发环境链接的数据库是ssm,里面的empname是张三开发环境链接的数据库是ssm1,里面的empname是李四测试环境连接的是ssm2,里面的emp那么是王五
3、POM文件
pom 文件要配置和上面对应的dev、test、prod三个环境对应的三个节点,activeByDefault为true则说明是默认激活的节点
<profiles>
<profile>
<!-- 开发环境 -->
<id>dev</id>
<properties>
<environment>dev</environment><!-- 节点名字dev是自己随意取的 -->
</properties>
<activation>
<activeByDefault>true</activeByDefault><!-- 默认激活该profile节点-->
</activation>
</profile>
<profile>
<!-- 测试环境 -->
<id>test</id>
<properties>
<environment>test</environment>
</properties>
</profile>
<profile>
<!-- 生产环境 -->
<id>prod</id>
<properties>
<environment>prod</environment>
</properties>
</profile>
</profiles>
拦截器的作用 filtering 为了在application.xml配置文件中进行动态的获取不同环境的对应的environment的名字${environment}
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<excludes><!--除去这个配置-->
<exclude>dev/**</exclude>
<exclude>test/**</exclude>
<exclude>prod/**</exclude>
</excludes>
<filtering>true</filtering><!--增加此项,方便配置文件获取属性,比如 <context:property-placeholder location="classpath:${environment}/dbconfig.properties"/>-->
</resource>
<resource>
<!--整理增加需要切换的环境配置,打包到resources-->
<directory>src/main/resources/${environment}</directory>
<targetPath>${environment}</targetPath>
</resource>
</resources>
<!--加载数据库配置文件-->
<context:property-placeholder location="classpath:${environment}/dbconfig.properties"/>
<bean id="PooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
4、运行测试
1、 打包方式一
通过勾选不同环境的profiles进行,clean package
2、命令打包方式
mvn clean package -Pdev
mvn clean package -Ptest
mvn clean package -Pprod
潦潦此案,欢迎指正补充!