Maven profiles多環境配置

第一步:在resources目錄下新建config目錄,而且建立profile-dev.properties(開發)、profile-prod.properties(生產)兩個配置文件。例如:redis

第二步:修改pom.xml文件,須要修改兩個地方maven

一、在project標籤內新增下列配置ui

<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>

二、在project > build > resources標籤下增長以下內容:xml

<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>裏指定。開發

案例:io

profile-dev.properties的內容以下:ast

#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

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}
相關文章
相關標籤/搜索