springboot maven profiles 打包不通环境

springboot maven profiles 打包不通环境

 

在Spring Boot项目下的application.yml或application.properties中添加配置项

application.yml

spring:
  profiles:
    active: dev

application.properties

spring.profiles.active: dev

spring.profiles.active: dev表示默认加载的就是开发环境的配置,如果dev换成test,则会加载测试环境的属性,以此类推。

 

  1. 创建不同环境下的配置文件

    例如环境分为开发环境、测试环境和生产环境,创建如下文件:

    • 开发环境 : application-dev.ymlapplication-dev.properties
    • 测试环境:application-test.ymlapplication-test.properties
    • 生产环境:application-prod.ymlapplication-prod.properties

application.yml文件分为四部分,使用 --- 来作为分隔符,第一部分通用配置部分,表示三个环境都通用的属性,用spring.profiles指定了一个值(开发为dev,测试为test,生产为prod),这个值表示该段配置应该用在哪个profile里面。

例如, 我们在某个项目中根据不同的环境配置不同的数据库信息:

  • 开发环境

    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>

 

转载于:https://my.oschina.net/lenglingx/blog/3047997

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值