zoukankan      html  css  js  c++  java
  • springboot配置多项目下统一切换不同环境变量profile办法

    问题发生:

    我们知道springboot 项目中的配置文件application.properties ,几乎我们的配置信息都写在了这边,非常方便,但常常我们会多环境应用,比如开发环境 、测试环境 、正式环境 等不同的配置信息,前一段时间,由于要实现自动化部署,要改很多套环境,很麻烦,于是就利用了切换profile的办法解决了此问题

    解决办法:

    方法一:在pom.xml文件中指定数据源以及要切换的变量,然后在application中使用@@引用

    1.首先在pom.xml文件中添加以下配置

    <profiles> 
        <!-- 默认开发环境 --> 
        <profile> 
            <!--id唯一,不能有重复的--> 
            <id>dev</id> 
            <!--配置-->
             <properties> 
                <!-- 环境标识,需要与配置文件的名称相对应 --> 
                <serviceport>8089</serviceport> <!-- serviceport为端口引用名称可自定义 --> 
                <zkHost>http://localhost:8983/solr</zkHost> <!-- zkHost为数据库地址名称可自定义 --> 
                <driverclass>oracle.jdbc.driver.OracleDriver</driverclass> <!-- driverclass为数据库驱动名称可自定义 -->
            </properties> 
            <activation> 
                <!-- 默认环境,如果设置了这个,则项目运行默认 使用这个profile的配置 --> <activeByDefault>true</activeByDefault> 
            </activation> 
        </profile> 
        <!-- 生产环境 -->
        <profile> 
            <id>product</id> 
            <properties> 
                <serviceport>30001</serviceport> 
                <zkHost>http://113.11.11.11:8983/solr</zkHost> 
                <driverclass>com.microsoft.sqlserver.jdbc.SQLServerDriver</driverclass>
            </properties> 
        </profile> 
    </profiles>

    2.接下来在application.properties 文件中加入一下配置即可

    server.port=@serviceport@
    
    spring.datasource.url=@zkHost@
    
    spring.datasource.driver-class-name=@driverclass@

    方法二:在pom.xml文件中指定开发环境 测试环境 正式环境 的名字,然后通过@@切换实现也行,具体步骤如下:

    1.首先在pom.xml文件中添加以下配置

        <profiles>
            <profile>
                <!-- 开发环境 -->
                <id>dev</id>
                <properties>
                    <!-- 环境标识,需要与配置文件的名称相对应 --> 
                    <env>dev</env>
                </properties>
                <activation>
                    <!-- 设置默认激活这个配置 -->
                    <activeByDefault>true</activeByDefault>
                </activation>
            </profile>
            <profile>
                <!-- 测试环境 -->
                <id>test</id>
                <properties>
                    <env>test</env>
                </properties>
            </profile>
            <profile>
                <!-- 发布环境 -->
                <id>prod</id>
                <properties>
                    <env>prod</env>
                </properties>
            </profile>
        </profiles>

    2.接下来在application.properties 文件中加入一下配置即可

    方法三:如果我们使用的是构建工具是Maven,也可以通过Maven的profile特性来实现多环境配置打包。pom.xml配置如下:

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

    然后通过通过执行 mvn clean package -P ${profile} 来指定使用哪个profile

    注:前两个方法打包时也是通过命令 mvn clean install -P ${profile}  -DskipTests打包即可(${profile} 即你定义的配置文件的名称 如dev的写法为:mvn clean install -P dev  -DskipTests),还有使用.yml文件也是一样的做法,换成.yml语言写法即可

    如果有不足和不正确的地方请大家多多指正,前两个方法亲测可用,第三个没试过,但是这种方法是可行的

  • 相关阅读:
    TP5多条件搜索,同时有必要条件
    微信支付模式二 统一下单一直提示签名错误
    Js选择器总结
    video.js视频播放插件
    chosen 下拉框
    在MySQL中实现Rank高级排名函数
    解决html页面英文和数字不自动换行,但中文就可以自动换行
    php去除html标签
    day29 继承
    day28 作业
  • 原文地址:https://www.cnblogs.com/chinawfsl/p/9406992.html
Copyright © 2011-2022 走看看