springboot maven profiles 打包不通環境

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,則會加載測試環境的屬性,以此類推。數據庫

 

  1. 建立不一樣環境下的配置文件springboot

    例如環境分爲開發環境、測試環境和生產環境,建立以下文件:服務器

    • 開發環境 : application-dev.ymlapplication-dev.properties
    • 測試環境:application-test.ymlapplication-test.properties
    • 生產環境:application-prod.ymlapplication-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!@#
  1. 對應用進行打包操做後, 啓動應用

    若是是部署到服務器的話,咱們正常打成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
  2. 添加擴展的配置文件信息

    在複雜項目中,咱們有可能須要添加一些額外的擴展配置信息, Spring Boot支持項目添加擴展的配置文件, 假設咱們在某個功能模塊hurricane-ldap中配置須要進行LDAP認證的配置文件application-ldap.yml,咱們能夠在application.yml或application.properties文件中修改spring.profiles.active配置項, 以下所示:

    spring:
         profiles:
            active: dev,ldap

經過Mavan實現多環境配置打包

  1. 在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中應用。

  2. 修改applcation.yml或application.properties配置項

    修改applcation.yml或application.properties配置項,替換spring.profies.active配置項,以下所示:

    spring:
        profiles:
           active: @profileActive@,ldap

    注: @profileActive@爲上一步驟中pom.xml文件配置的自定義配置項, 該參數能夠根據開發人員自身的習慣進行命名和配置。

  3. 使用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>
相關文章
相關標籤/搜索