第一步:在resources目录下新建config目录,并且创建profile-dev.properties(开发)、profile-prod.properties(生产)两个配置文件。例如:
第二步:修改pom.xml文件,需要修改两个地方
1、在project标签内新增下列配置
<profiles> <profile> <id>dev</id> <build> <filters> <filter>src/main/resources/config/profile-dev.properties</filter> </filters> </build> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>prod</id> <build> <filters> <filter>src/main/resources/config/profile-prod.properties</filter> </filters> </build> </profile> </profiles>
2、在project > build > resources标签下增加如下内容:
<resource> <directory>${basedir}/src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource>
分析下<resource>下面的属性:
<directory>: 配置那个目录下的文件通过${key}会被替换成属性值,resource目录下,我们一般放jdbc连接,或配置文件。
<includes>:指定那个目录下那个文件。
<filtering>:这个配置的意思是过滤上面指定属性文件中的占位符,占位符是${变量名称}这样的形式,maven会自动读取配置文件,然后解析其中的占位符,使用上面pom文件中定义的属性进行替换。
<exclueds>:在resource目录下,有很多文件,但用些文件不希望替换,则可以通过<excluede>指定。
<filters>:这里的filters与<profile>的filter意思一样,都是指属性文件地址,这个如果上面定义<profile>的时候指定了,这里就不需要了,但有些开发习惯是在<profile>不定义,然后在<build>里指定。
案例:
profile-dev.properties的内容如下:
#1000*60*2 thread.sleepTime=120000 #redis redis.keyPrefix=hbase redis.host=10.0.11.245 redis.port=6379 redis.timeout=3600000 redis.password=wetp #hbase hbase.zookeeper.quorum=10.0.11.104 hbase.zookeeper.property.clientPort=2181 hbase.master=10.0.11.104:16010
被替换的文件wetp.properties的内容如下:
thread.sleepTime=${thread.sleepTime} #redis redis.keyPrefix=${redis.keyPrefix} redis.host=${redis.host} redis.port=${redis.port} redis.timeout=${redis.timeout} redis.password=${redis.password} #hbase hbase.zookeeper.quorum=${hbase.zookeeper.quorum} hbase.zookeeper.property.clientPort=${hbase.zookeeper.property.clientPort} hbase.master=${hbase.master}