springboot maven profiles 打包不通環境java
在Spring Boot項目下的application.yml或application.properties中添加配置項mysql
application.ymlspring
spring: profiles: active: dev
application.propertiessql
spring.profiles.active: dev
spring.profiles.active: dev
表示默認加載的就是開發環境的配置,若是dev換成test,則會加載測試環境的屬性,以此類推。數據庫
建立不一樣環境下的配置文件springboot
例如環境分爲開發環境、測試環境和生產環境,建立以下文件:服務器
application-dev.yml
或 application-dev.properties
application-test.yml
或 application-test.properties
application-prod.yml
或 application-prod.properties
application.yml文件分爲四部分,使用 --- 來做爲分隔符,第一部分通用配置部分,表示三個環境都通用的屬性,用spring.profiles指定了一個值(開發爲dev,測試爲test,生產爲prod),這個值表示該段配置應該用在哪一個profile裏面。app
例如, 咱們在某個項目中根據不一樣的環境配置不一樣的數據庫信息:maven
開發環境spring-boot
spring: datasource: name: druidDataSource type: com.alibaba.druid.pool.DruidDataSource druid: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://192.168.1.2:3306/myDB?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&useSSL=false username: user1 password: 123456
測試環境
spring: datasource: name: druidDataSource type: com.alibaba.druid.pool.DruidDataSource druid: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://192.168.20.2:3306/myTestDB?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&useSSL=false username: user1 password: 123456
生產環境
spring: datasource: name: druidDataSource type: com.alibaba.druid.pool.DruidDataSource druid: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://172.1.16.2:3306/myProdDB?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&useSSL=false username: prod1 password: prod1234!@#
對應用進行打包操做後, 啓動應用
若是是部署到服務器的話,咱們正常打成jar包,啓動應用時Spring Boot經過application.yml或applcation.properties文件中的spring.profiles.active
配置項加載相關環境的配置信息。除此以外, 咱們能夠經過 --spring.profiles.active=xxx
來控制加載哪一個環境的配置,參考命令以下:
# 表示使用開發環境的配置 java -jar xxx.jar --spring.profiles.active=dev # 表示使用測試環境的配置 java -jar xxx.jar --spring.profiles.active=test # 表示使用生產環境的配置 java -jar xxx.jar --spring.profiles.active=prod
添加擴展的配置文件信息
在複雜項目中,咱們有可能須要添加一些額外的擴展配置信息, Spring Boot支持項目添加擴展的配置文件, 假設咱們在某個功能模塊hurricane-ldap
中配置須要進行LDAP認證的配置文件application-ldap.yml
,咱們能夠在application.yml或application.properties文件中修改spring.profiles.active
配置項, 以下所示:
spring: profiles: active: dev,ldap
在pom.xml文件中添加多環境配置
<!-- Application Environment Setting --> <profiles> <profile> <id>dev</id> <activation> <!-- Default Active Without Assign Parameter --> <activeByDefault>true</activeByDefault> </activation> <properties> <profileActive>dev</profileActive> </properties> </profile> <profile> <id>test</id> <properties> <profileActive>test</profileActive> </properties> </profile> <profile> <id>prod</id> <properties> <profileActive>prod</profileActive> </properties> </profile> </profiles>
注: 配置文件中添加開發、測試和生產三個環境的配置, 其中應注意
profileActive
自定義配置項, 該配置項指明應用配置文件的名稱, 此配置項將在application.yml或application.properties中應用。
修改applcation.yml或application.properties配置項
修改applcation.yml或application.properties配置項,替換spring.profies.active
配置項,以下所示:
spring: profiles: active: @profileActive@,ldap
注: @profileActive@
爲上一步驟中pom.xml文件配置的自定義配置項, 該參數能夠根據開發人員自身的習慣進行命名和配置。
使用maven命令打包成相應環境的應用程序包
mvn clean package -Pprod -U # 或者 mvn clean package -DprofileActive=prod -U
mvn clean package -Ptest -U # 或者 mvn clean package -DprofileActive=test -U
mvn clean package -Pdev -U # 或者 mvn clean package -DprofileActive=dev -U
其餘的
<profiles> <!--開發環境--> <profile> <id>dev</id> <properties> <build.profile.id>dev</build.profile.id> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <!--測試環境--> <profile> <id>test</id> <properties> <build.profile.id>test</build.profile.id> </properties> </profile> <!--生產環境--> <profile> <id>prod</id> <properties> <build.profile.id>prod</build.profile.id> </properties> </profile> </profiles> <build> <finalName>${project.artifactId}</finalName> <resources> <resource> <directory>src/main/resources</directory> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources.${build.profile.id}</directory> <filtering>false</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <classifier>exec</classifier> </configuration> </plugin> </plugins> </build>