美文网首页
Spring Boot多环境搭建(Maven方式实现)

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

作者: yellow_han | 来源:发表于2019-08-08 16:45 被阅读0次

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

1、父工程pom文件

注意点:<delimiter>@</delimiter>不可缺少,后面在application.yml中会用到。
<build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <delimiters>
                        <delimiter>@</delimiter> <!-- 替换符 -->
                    </delimiters>
                    <useDefaultDelimiters>false</useDefaultDelimiters>
                </configuration>
            </plugin>

        </plugins>

        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

    <profiles>
        <profile>
            <id>local</id>
            <properties>
                <spring.active>local</spring.active>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>dev</id>
            <properties>
                <spring.active>dev</spring.active>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <spring.active>prod</spring.active>
            </properties>
        </profile>
    </profiles>

2、子工程

注意点:<filtering>true</filtering> 不可缺少,否则运行会报错
 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

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方式实现)

      本文链接:https://www.haomeiwen.com/subject/ssgxjctx.html