Spring Boot多环境搭建(Maven方式实现)

实现原理:在打包的时候,装入不同环境的配置文件。

1、父工程pom文件

注意点:@不可缺少,后面在application.yml中会用到。

        
            
                
                    org.apache.maven.plugins
                    maven-compiler-plugin
                    3.1
                    
                        ${java.version}
                        ${java.version}
                    
                
                
                    org.springframework.boot
                    spring-boot-maven-plugin
                
            
        
        
            
                org.apache.maven.plugins
                maven-resources-plugin
                
                    
                        @ 
                    
                    false
                
            

        

        
            
                src/main/resources
                true
            
            
                src/main/java
                
                    **/*.xml
                
            
        
    

    
        
            local
            
                local
            
            
                true
            
        
        
            dev
            
                dev
            
        
        
            prod
            
                prod
            
        
    

2、子工程

注意点:true 不可缺少,否则运行会报错
 
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
            
        
        
            
                src/main/resources
                true
            
            
                src/main/java
                
                    **/*.xml
                
            
        
    

3、application.yml(以---进行环境拆分)

注意点:@spring.active@就是在上面定义的分隔符,对应的值在父级工程的pom文件里,默认为local。
spring:
  profiles:
    active: @spring.active@
---

server:
   port: 9090
spring:
  profiles: local
  datasource:
      url: jdbc:mysql://127.0.0.1:3306/demo?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
      username: root
      password: 123456
      filters: log4j,wall,mergeStat
      hikari:
        readOnly: false
        connectionTimeout: 60000
        idleTimeout: 60000
        validationTimeout: 3000
        maxLifetime: 60000
        loginTimeout: 5
        maximumPoolSize: 60
        minimumIdle: 10
  redis:
    database: 0
    host: 127.0.0.1
    port: 6379
    password:      # 密码(默认为空)
    timeout: 6000ms  # 连接超时时长(毫秒)


---

server:
  port: 9090

spring:
  profiles: produce
  datasource:
      url: jdbc:mysql://127.0.0.1:3306/demo?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
      username: root
      password: 123456
      filters: log4j,wall,mergeStat
      hikari:
        readOnly: false
        connectionTimeout: 60000
        idleTimeout: 60000
        validationTimeout: 3000
        maxLifetime: 60000
        loginTimeout: 5
        maximumPoolSize: 60
        minimumIdle: 10
  redis:
    database: 0
    host: 127.0.0.1
    port: 6379
    password:  # 密码(默认为空)
    timeout: 6000ms  # 连接超时时长(毫秒)

4、以拆分文件的形式也可以

application.yml

spring:
  profiles:
    active: @spring.active@

application-local.yml

server:
   port: 9090
spring:
  profiles: local
  datasource:
      url: jdbc:mysql://127.0.0.1:3306/light_tool?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
      username: root
      password: 123456
      filters: log4j,wall,mergeStat
      hikari:
        readOnly: false
        connectionTimeout: 60000
        idleTimeout: 60000
        validationTimeout: 3000
        maxLifetime: 60000
        loginTimeout: 5
        maximumPoolSize: 60
        minimumIdle: 10
  redis:
    database: 0
    host: 127.0.0.1
    port: 6379
    password:      # 密码(默认为空)
    timeout: 6000ms  # 连接超时时长(毫秒)

application-prod.yml

server:
   port: 9090
spring:
  profiles: prod
  datasource:
      url: jdbc:mysql://127.0.0.1:3306/light_tool?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
      username: root
      password: 123456
      filters: log4j,wall,mergeStat
      hikari:
        readOnly: false
        connectionTimeout: 60000
        idleTimeout: 60000
        validationTimeout: 3000
        maxLifetime: 60000
        loginTimeout: 5
        maximumPoolSize: 60
        minimumIdle: 10
  redis:
    database: 0
    host: 127.0.0.1
    port: 6379
    password:      # 密码(默认为空)
    timeout: 6000ms  # 连接超时时长(毫秒)

5、Maven打包方式

-P指的是环境
mvn package -Dmaven.test.skip=true -P prod -f pom.xml

6、源码地址:https://gitee.com/hsshy/beam-parent

你可能感兴趣的:(Spring Boot多环境搭建(Maven方式实现))