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>
相关文章
相关标签/搜索