SpringBoot配置多环境,dev,prod,test

springboot与maven配置多环境

开发任何的项目至少都需要三个环境,分别是
开发环境
测试环境
生产环境
环境不同意味着配置也是不相同的,比如数据库,文件路径等等配置,那么如何解决这么多环境整合在一起既不混乱又能很优雅呢?
解决方案就是多环境整合,在打包的时候,使用命令来区分环境
mvn clean install package -P dev
这个-P就是指定配置环境的

1. application.yml作为主配置文件

里面定义了需要激活的环境,如下:

spring:
  profiles:
    active: @profile.active@

2. application-*.yml这三个配置文件就是各自环境的配置

比如application-dev.yml(开发环境)文件的配置如下:


server:
  port: 8080
  servlet:
    context-path: /api-front
spring:
  redis:
    database: 2
    host: xxxx
    password: xxxx

3.POM文件配置

要和Maven整合当然少不了pom文件的配置,maven中也提供了profile的支持,每个profile能够定义自己的一些依赖和配置和激活条件,profile配置如下:


    <profiles>
        <profile>
            
            <id>devid>
            <activation>
                
                <activeByDefault>trueactiveByDefault>
            activation>
            <properties>
                
                <profile.active>devprofile.active>
            properties>
        profile>

        
        <profile>
            <id>testid>
            <properties>
                <profile.active>testprofile.active>
            properties>
        profile>

        
        <profile>
            <id>prodid>
            <properties>
                <profile.active>prodprofile.active>
            properties>
        profile>
    profiles>

maven中的profile的激活条件还可以根据jdk、操作系统、文件存在或者缺失来激活。如下


            <activation>
                
                <activeByDefault>trueactiveByDefault>
                
                
                
                <jdk>1.8jdk>
                
                <jdk>[1.8,)jdk>

                
                <os>
                    <name>Windows XPname>
                    <family>Windowsfamily>
                    <arch>x86arch>
                    <version>5.1.2600version>
                os>
            activation>
        profile>

资源过滤

在进行生产环境打包的时候并不需要开发和测试环境的一些文件,这里我们可以进行资源的过滤,保留需要的配置和文件,同样是在pom文件中定义,如下:

	<build>
        <resources>
            
            <resource>
                <directory>src/main/resourcesdirectory>
                
                <excludes>
                    
                    <exclude>application*.ymlexclude>
                excludes>
            resource>

            
            <resource>
                <directory>src/main/resourcesdirectory>
                
                <filtering>truefiltering>
                <includes>
                    <include>application.ymlinclude>
                    
                    <include>application-${profile.active}.ymlinclude>
                includes>
            resource>
        resources>
    build>

上述配置主要分为两个方面,第一是先排除所有配置文件,第二是根据profile.active动态的引入配置文件。

你可能感兴趣的:(springboot开发实战,maven)