美文网首页
Spring Boot多环境搭建(命令行指定的方式)

Spring Boot多环境搭建(命令行指定的方式)

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

1、原理:SpringApplication类中的run(String... args)一路跟进...需查看源码。最终可看到:SpringBoot可通过命令行设置参数。

image.png

2、父工程pom文件,不像Maven打包的方式,需要定义一个替换符

<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>
              
            </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>

3、子工程

<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>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

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

server:
   port: 9090
---

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  # 连接超时时长(毫秒)

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

application.yml

server:
   port: 9090

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  # 连接超时时长(毫秒)

6、idea运行方式

image.png

7、打包及运行

package -Dmaven.test.skip
nohup java -jar xxx.jar --spring.profiles.active=prod >/dev/null 2>&1 &

相关文章

网友评论

      本文标题:Spring Boot多环境搭建(命令行指定的方式)

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