SpringBoot根据Maven动态选择profile打包的几种方式_指定 profile 打包-程序员宅基地

技术标签: spring boot  java  tomcat  maven  

常用的几种激活profile的方式

  1. 在配置文件中直接指定
    spring.profiles.active=test
    
  2. 使用占位符,在打包时替换,以mavne为例
    spring.profiles.active=@spring.profiles.active@
    
    maven中加入
    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <spring.profiles.active>dev</spring.profiles.active>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <spring.profiles.active>test</spring.profiles.active>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <spring.profiles.active>prod</spring.profiles.active>
            </properties>
        </profile>
    </profiles>
    
    打包时执行以下命令,或者
     mvn package -Ptest  
    
    IDEA右边直接勾选要选择的环境在这里插入图片描述
  3. JVM参数方式
    java命令行:
     java -jar app.jar --spring.profiles.active=dev
    
    或者IDEA在这里插入图片描述
  4. ENV方式(建议使用此方式)

具体使用哪个环境由服务器决定,通过在服务器(例如Tomcat)上的启动脚本里增加:-Dspring.profiles.active=prod来决定使用哪个环境。

优点是不再需要上线测试、生产时手动改环境了,只需要打一个包就可以在所有环境运行,可以避免因打错包或部署错包造成的一系列问题。

这是我项目启动Tomcat的脚本的配置,通过在启动脚本里指定要环境,可以动态选择要启动哪种配置文件在这里插入图片描述
具体maven配置和上述第二种差不多,先在maven配置profile

<build>
    <resources>
        <resource>
            <!-- 指定配置文件所在的resource目录 -->
            <directory>src/main/resources</directory>
            <includes>
                <include>public/**</include>
                <include>static/**</include>
                <include>templates/**</include>
            	<!-- 选择要打包的配置文件和日志,当然也可以不加打包所有配置文件,然后由具体服务器来选择使用哪个 -->
                <include>application-${spring.profiles.active}.yml</include>
               <include>logback-${spring.profiles.active}.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>        
<profiles>
   <profile>
       <id>dev</id>
       <properties>
           <spring.profiles.active>dev</spring.profiles.active>
       </properties>
       <activation>
           <activeByDefault>true</activeByDefault>
       </activation>
   </profile>
   <profile>
       <id>test</id>
       <properties>
           <spring.profiles.active>test</spring.profiles.active>
       </properties>
   </profile>
   <profile>
       <id>prod</id>
       <properties>
           <spring.profiles.active>prod</spring.profiles.active>
       </properties>
   </profile>
</profiles>

配置文件变成如下格式
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ViGUO123/article/details/119751767

智能推荐

【头歌系统Python实验】函数调用_函数调用头歌-程序员宅基地

文章浏览阅读2k次,点赞27次,收藏28次。任务描述我们在编程过程中会用到很多函数,但我们不需要每个函数都自己去编写,因为 Python 内置了很多十分有用的函数,我们在编程过程中可以直接调用。本关目标是让学习者了解并掌握一些常用的 Python 内置函数的用法。相关知识数学运算abs()类型转换bool()序列操作all():判断可迭代对象的每个元素是否都为True:判断可迭代对象的元素是否有为True:对可迭代对象进行排序,返回一个新的列表。对象操作help():返回对象的帮助信息;dir():返回对象或者当前作用域内的属性列表。_函数调用头歌

Linux_API_系列-整体概览-程序员宅基地

文章浏览阅读245次。Linux下API编程不像Windows一样,对每种设备和不同功能都有统一的API,所以有了《Windows核心编程》这种导论一类的大而全的书籍,整本书厚的像一块砖头。Linux下贯彻了一贯的“一切皆文件”的宗旨,所以对于系统编程而言,整体API算是非常少了。网上有很多大佬做过很多分析总结,或者参考《Linux系统高级编程》,很快就能大概得到整体概览。

嵌入式Linux-IMX6ULL开发环境配置_imx6 linux 开发-程序员宅基地

文章浏览阅读949次,点赞2次,收藏3次。嵌入式Linux-IMX6ULL开发环境配置_imx6 linux 开发

bitset用法_bitset可以用=吗-程序员宅基地

文章浏览阅读992次,点赞4次,收藏2次。$bitset$是一个类似于bool数组的结构,可以看作一个有多位的二进制数,支持位运算操作,在状压DP等题目中可以使用。用$bitset$可以大大降低常数。_bitset可以用=吗

pta 7-1 日期类设计 (30 分)两个日期之间相隔天数_7-1 计算天数pta-程序员宅基地

文章浏览阅读1.5k次,点赞3次,收藏8次。有大佬这样解决java在pta交不了的问题:PTA上提交Java程序的一些套路参考题目集二中和日期相关的程序,设计一个类DateUtil,该类有三个私有属性year、month、day(均为整型数),其中,year∈[1820,2020] ,month∈[1,12] ,day∈[1,31] , 除了创建该类的构造方法、属性的getter及setter方法外,需要编写如下方法:public boolean checkInputValidity();//检测输入的年、月、日是否合法public bool_7-1 计算天数pta

Ubuntu使用apt-get下载速度慢的解决方法_agt-get下载-程序员宅基地

文章浏览阅读3.8w次,点赞17次,收藏53次。查看所用的源:$ sudo vim /etc/apt/sources.list 由于安装的Ubuntu Server 16.04.1 LTS是英文版的,软件源就默认都是 us.archive.ubuntu.com(英国) 的,所以很慢。# deb cdrom:[Ubuntu-Server 16.04.1 LTS _Xenial Xerus_ - Release amd64 (..._agt-get下载

随便推点

mysql pdo 预处理_pdo完美操作数据库 - 预处理(一定要学会哦)-程序员宅基地

文章浏览阅读189次。什么是预处理?成熟的数据库都支持预处理语句(Prepared Statements)的概念。它们是什么东西?你可以把它们想成是一种编译过的要执行的SQL语句模板,可以使用不同的变量参数定制它。预处理语句具有两个主要的优点:1 查询只需要被解析(或准备)一次,但可以使用相同或不同的参数执行多次。当查询准备好(Prepared)之后,数据库就会分析,编译并优化它要执行查询的计划。对于复杂查询来说,如果..._使用pdo预处理方式操作数据库

4. GC 算法(实现篇) - GC参考手册-程序员宅基地

文章浏览阅读54次。2019独角兽企业重金招聘Python工程师标准>>> ..._[gc (system.gc()) 23046k->21242k(49152k), 0.0016373 secs] [full gc (system.g

雅可比(Jacobi)迭代法解线性方程组的Matlab实现_matlab雅可比迭代法解线性方程组-程序员宅基地

文章浏览阅读5.7w次,点赞104次,收藏657次。雅可比(Jacobi)迭代法解线性方程组的Matlab实现迭代法解线性方程组的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计算新的近似解的规则,有不同的计算规则得到不同的迭代法。本文是常用的迭代法之一:Jacobi迭代法解线性方程组的matlab实现。关于Jacobi迭代法的具体内容和算法见《数值计算方法》—丁丽娟,P65-66程序中所用算法和书中的一致。输入量有以下6个..._matlab雅可比迭代法解线性方程组

Mac OS X 下 Word VBA 宏 - 如何在 Word 替换字符串_mac word中vba的使用-程序员宅基地

文章浏览阅读1.8k次。下面是一个简单的例子,用于把文档里的 ”hello" 替换成 "world" ' Define the search range to be the whole document Set myRange = ActiveDocument.Content ' Set the Find parameters myRange.Find.C_mac word中vba的使用

wifi开启位置服务器,如何设置wifi定位服务器地址-程序员宅基地

文章浏览阅读989次。如何设置wifi定位服务器地址 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。本节操作以“Windows Server 2012 R2 数据中心版 64位”操作系统为例,介绍如何通过Microsoft Remote Desktop客户端登录Windows实例。云服务器状态为“运行中”..._wifi 位置服务器

Elasticserach 同步索引报错:ElasticSearch ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only /_es indics block exception-程序员宅基地

文章浏览阅读1.2k次。欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 《Java 核心知识整理&面试.pdf》资源链接!!个人网站: https://www.exception.site/essay/elasticsearch-sync-index-read-only-allow-delete目录一、背景二、题外话三、开始排查四、为什么索引处于只读状态呢..._es indics block exception

推荐文章

热门文章

相关标签