Spring boot 專案分環境 Maven 打包,動態配置檔案,動態配置專案
阿新 • • 發佈:2019-02-04
Spring boot Maven 專案打包
使用Maven 實現多環境 test dev prod 打包
專案的結構
在下圖中可用看出,我們打包時各個環境需要分開,採用 application-環境.yml 的方式命名
環境配置開始
首先我們需要在application.yml檔案中配置 spring.profiles.active = @[email protected]這裡的proofileAction 是我們下面要用到的變數
spring:
profiles:
active: @[email protected]
include: swagger
devtools:
restart:
enabled: true
livereload:
enabled: true # we use gulp + BrowserSync for livereload
jackson:
pom.xml
我們需要在pom中指定finalname的名稱,當然對於打包來說名稱並不影響。
實際上 不配置 resources節點也是可以的,在pom新增只是為了在打包中少幾個配置檔案。
當然你可以通過include來選擇需要匯入哪個檔案。
<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>
在pom中profiles節點才是分專案打包的關鍵,通過profile節點可以在打包時動態的去更新我們在application.xml中的配置值
在編譯專案時,可以使用 -P 引數指定需要使用的 profile 的 id,比如下面命令將會使用 dev profile:
mvn clean package -P dev
如果想使用test,只需要改為以下即可
mvn clean package -Ptest
假如不指定 -P 引數的話,則會使用 activeByDefault=true 的一項(即 dev)。