Maven的profile使用详解
2016-10-09 10:25
387 查看
背景
一个项目常常有很多发布环境,比如说测试环境,预发布环境,正式环境等等。而不同的发布环境里面需要配置的信息是有区别的,比如说测试环境需要连接测试DB的url和用户名密码,正式环境就需要连接正式DB的url和用户名密码。如果每次部署项目都需要改pom配置文件的话,不但麻烦而且有可能会改错和漏改。这时候就需要用到pom的profile标签了。
profile标签的工作流程
1,一个环境配置一个profile标签,在里面配置环境信息下面例子有本地开发环境,测试环境和正式环境共三个环境的配置信息,不同的配置里面有不同的redis服务器连接配置。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!--<dependencies>等等配置,省掉 --> <profiles> <!-- 本地开发环境(Development) --> <profile> <id>Development</id> <properties> <!-- redis --> <redis.host>192.168.14.73</redis.host> <redis.port>6379</redis.port> <redis.auth></redis.auth> <redis.select></redis.select> </properties> <!-- 打包时不指定profile id,默认激活本环境 --> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <!-- 测试环境(TEST) 提供给测试团队的--> <profile> <id>Test</id> <properties> <!-- redis --> <redis.host>192.168.14.200</redis.host> <redis.port>6379</redis.port> <redis.auth></redis.auth> <redis.select></redis.select> </properties> </profile> <!-- 正式生产环境(Production) --> <profile> <id>Production</id> <properties> <!-- redis --> <redis.host>192.168.14.206</redis.host> <redis.port>6379</redis.port> <redis.auth>password</redis.auth> <redis.select></redis.select> </properties> </profile> </profiles>
2,java代码中想要取得profile中的配置的话,要通过.properties文件来读取
例redis.properties
#redis服务器 redis.host=${redis.host} redis.port=${redis.port} redis.auth=${redis.auth} redis.select=${redis.select}
3,.properties文件怎么才能取到pom文件中profile定义的值呢,需要在pom文件中增加filtering标签,加在build标签内
<build> <sourceDirectory>src/main/java</sourceDirectory> <testSourceDirectory>src/test/java</testSourceDirectory> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <excludes> <exclude>**/*.java</exclude> </excludes> <filtering>true</filtering> </resource> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <testResources> <testResource> <directory>src/test/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <excludes> <exclude>**/*.java</exclude> <exclude>**/*.class</exclude> </excludes> <filtering>true</filtering> </testResource> <testResource> <directory>src/test/resources</directory> <filtering>true</filtering> </testResource> </testResources> <!--<plugins>省掉 --> </build>
4,java读取.properties文件,使用ResourceBundle就可以了
ResourceBundle resourceBundle = ResourceBundle.getBundle("redis"); //redis配置信息 String host = resourceBundle.getString("redis.host");//redis服务器host String port = resourceBundle.getString("redis.port");//redis服务器端口 String auth = resourceBundle.getString("redis.auth");//redis服务器认证信息 String select = resourceBundle.getString("redis.select");//redis数据库
5,打包的时候通过-P指定用哪一个profile的信息来编译打包
`mvn package -PprofileId `
相关文章推荐
- Maven的profile使用详解
- Maven的porfile与SpringBoot的profile结合使用详解
- Oracle Profile 使用详解
- 传智播客--CVS,SVN,Maven的服务器端配置和客户端使用详解(毛伟)
- 使用maven的profile和filter插件管理配置项
- orcle profile使用详解
- Maven提高篇系列之四——使用Profile
- Oracle中的Profile使用详解
- Maven 使用Profile和Resources Filter隔离测试环境
- CVS,SVN,Maven的服务器端配置和客户端使用详解(毛伟)
- Apache Maven 使用 profile 和 filtering 实现多种环境下的资源配置管理(属性过滤)
- 利用maven的filter和profile实现不同环境使用不同的配制
- Oracle Profile 使用详解
- Profile 详解之匿名用户 Profile 使用
- Maven提高篇系列之四——使用Profile
- Maven之Profile详解
- Oracle Profile 使用详解
- Apache Maven 使用 profile 和 filtering 实现多种环境下的资源配置管理
- 使用maven的profile和filter插件管理配置项
- Maven提高篇系列之四——使用Profile