五、配置profile
1、profile是用来做什么的
Profile能让你为一个特殊的环境自定义一个特殊的构建;profile使得不同环境间构建的可移植性成为可能。不同的构建环境是什么意思?构建环境的两个例子是产品环境和开发环境。当你在开发环境中工作时,你的系统可能被配置成访问运行在你本机的开发数据库实例,而在产品环境中,你的系统被配置成从产品数据库读取数据。Maven能让你定义任意数量的构建环境(构建profile),这些定义可以覆盖pom.xml中的任何配置。你可以配置你的应用程序,在“开发”profile中,访问本地的开发数据库实例,在“产品”profile中,访问产品数据库。Profile也可以通过环境和平台被激活,你可以自定义一个构建,它根据不同的操作系统或者不同的JDK版本有不同的行为。
---《maven权威指南》
我的理解是一个profile就是一种构建环境,我们可以通过激活我们自定义的构建环境来覆盖已有的maven环境配置。
2、配置pom.xml添加properties 和profile
<profiles>
<profile>
<id>dev</id>
<properties>
<db.url>jdbc:mysql://localhost:3306/ddd</db.url>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<db.url>jdbc:mysql://192.168.1.235:3306/ddd</db.url>
</properties>
</profile>
</profiles>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<db.url>jdbc:mysql://192.168.1.235:3306/ddd</db.url>
</properties>
3、在根目录加入一个资源属性文件baseconfig.properties
db.jdbc.url=${db.url}
baseConfig.jndiName=${db.jndiName}
4、配置maven pom.xml使得资源属性文件能共享到maven的properties属性
在build里面加入
<!-- 属性文件额可以访问maven中的属性 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
5、配置spring配置文件使得spring能够扫描到资源属性文件
<context:property-placeholder location="classpath*:META-INF/props/*.properties"
ignore-unresolvable="true" />
6、修改spring 配置文件改变数据源等配置硬编码的状况
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="${db.jdbc.url}">
</property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
7、maven命令选择构建环境
jetty:run -Djetty.port=9080 -Dmaven.test.skip=true -Pdev运行项目
8、从今以后再也不用手工修改配置切换开发、测试、生产环境了。
9、maven小结
关于maven的profile使用细节比较多,但一旦掌握将大大增加我们的工作效率,各位有空可自行研究下。关于maven的使用可参考《maven权威指南》一书。