在下圖中可用看出,咱們打包時各個環境須要分開,採用 application-環境.yml 的方式命名spring
首先咱們須要在application.yml文件中配置 spring.profiles.active = @profileActive@這裏的proofileAction 是咱們下面要用到的變量app
spring:
profiles:
active: @profileActive@
咱們須要在pom中指定finalname的名稱,固然對於打包來講名稱並不影響。
實際上 不配置 resources節點也是能夠的,在pom添加只是爲了在打包中少幾個配置文件。
固然你能夠經過include來選擇須要導入哪一個文件。maven
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <!-- 打包後文件名稱:項目名-環境-版本 --> <finalName>${project.artifactId}-${profileActive}-${project.version}</finalName> <resources> <resource> <directory>src/main/resources</directory> <!-- 開啓過濾替換功能--> <filtering>true</filtering> <includes> <!-- 項目打包完成的包中只包含當前環境文件 --> <include>application.yml</include> <include>application-${profileActive}.yml</include> </includes> </resource> </resources> </build> <!-- 多環境配置方案 --> <profiles> <profile> <id>dev</id> <properties> <profileActive>dev</profileActive> </properties> <activation> <!-- 默認狀況下使用dev開發配置 如 打包時不包含 -p 參數--> <activeByDefault>true</activeByDefault> </activation> </profile> <!-- 打包命令package -P test --> <profile> <id>test</id> <properties> <profileActive>test</profileActive> </properties> </profile> <!-- 打包命令package -P prod --> <profile> <id>prod</id> <properties> <profileActive>prod</profileActive> </properties> </profile> </profiles>
在編譯項目時,能夠使用 -P 參數指定須要使用的 profile 的 id,好比下面命令將會使用 dev profile:spring-boot
mvn clean package -P devui
若是想使用test,只須要改成如下便可spa
mvn clean package -Ptest.net
假如不指定 -P 參數的話,則會使用 activeByDefault=true 的一項(即 dev)。code