一、前言:
在maven的項目中如果想實現在不同環境加載不同配置文件(不同的數據庫、日志、使用參數等配置),可以優先考慮使用配置profile的方式來實現
二、在maven的pom.xml文件中配置:
(1)pom中指定配置的id和配置信息
<profiles> <profile> <!-- 本地開發環境 --> <id>dev</id> <properties> <profiles.active>dev</profiles.active> </properties> <activation> <!-- 設置默認激活這個配置 --> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <!-- 發布環境 --> <id>prod</id> <properties> <profiles.active>prod</profiles.active> </properties> </profile> <profile> <!-- 測試環境 --> <id>test</id> <properties> <profiles.active>test</profiles.active> <!-- 如果在properties或者yml中實用改變量使用@引用, 比如server.port=@server.port@ --> <server.port>8400</server.port> </properties> </profile> </profiles>
(2)在構建jar或者war包時候引用配置文件
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> <!--一定要設置成true.這樣才會用對應env目錄下的配置文件覆蓋原來的--> <filtering>true</filtering> <excludes> <exclude>application.properties</exclude> <exclude>application-dev.properties</exclude> <exclude>application-test.properties</exclude> <exclude>application-prd.properties</exclude> </excludes> </resource> <resource> <directory>src/main/resources</directory> <!--一定要設置成true.這樣才會用對應env目錄下的配置文件覆蓋原來的--> <filtering>true</filtering> <includes> <include>application.properties</include> <include>application-${profiles.active}.properties</include> </includes> </resource> </resources> </build>
三、指定文件的啟動方式:
1)默認的激活
上面的profile配置中設置的默認的激活環境。如下面所示
<activeByDefault>true</activeByDefault>
2)使用-P參數顯示激活一個profile
當我們在進行Maven操作時就可以使用-P參數顯示的指定當前激活的是哪一個profile了。比如我們需要在對項目進行打包的時候使用id為dev的profile,我們就可以這樣做:
mvn package –Pdev
這里假設dev是在settings.xml中使用dev標記的處於激活狀態的profile,那么當我們使用“-P !profile”的時候就表示在當前操作中該profile將不處於激活狀態。