Spring boot项目分环境Maven打包,动态配置文件,动态配置项目
Spring boot Maven 项目打包
使用Maven 实现多环境 test dev prod 打包
项目的结构
在下图中可用看出,我们打包时各个环境需要分开,采用 application-环境.yml 的方式命名

环境配置开始
首先我们需要在application.yml文件中配置 spring.profiles.active = @profileActive@这里的proofileAction 是我们下面要用到的变量
spring:
profiles:
active: @profileActive@
pom.xml
我们需要在pom中指定finalname的名称,当然对于打包来说名称并不影响。
实际上 不配置 resources节点也是可以的,在pom添加只是为了在打包中少几个配置文件。
当然你可以通过include来选择需要导入哪个文件。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<!-- 打包后文件名称:项目名-环境-版本 -->
<finalName>${project.artifactId}-${profileActive}-${project.version}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 开启过滤替换功能-->
<filtering>true</filtering>
<includes>
<!-- 项目打包完成的包中只包含当前环境文件 -->
<include>application.yml</include>
<include>application-${profileActive}.yml</include>
</includes>
</resource>
</resources>
</build> <!-- 多环境配置方案 -->
<profiles>
<profile>
<id>dev</id>
<properties>
<profileActive>dev</profileActive>
</properties>
<activation>
<!-- 默认情况下使用dev开发配置 如 打包时不包含 -p 参数-->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 打包命令package -P test -->
<profile>
<id>test</id>
<properties>
<profileActive>test</profileActive>
</properties>
</profile>
<!-- 打包命令package -P prod -->
<profile>
<id>prod</id>
<properties>
<profileActive>prod</profileActive>
</properties>
</profile>
</profiles>
在pom中profiles节点才是分项目打包的关键,通过profile节点可以在打包时动态的去更新我们在application.xml中的配置值

在编译项目时,可以使用 -P 参数指定需要使用的 profile 的 id,比如下面命令将会使用 dev profile:
mvn clean package -P dev
如果想使用test,只需要改为以下即可
mvn clean package -Ptest
假如不指定 -P 参数的话,则会使用 activeByDefault=true 的一项(即 dev)。
原文:https://blog.csdn.net/qq_22327273/article/details/83548138
参考文档:
LuckyZhouStar Maven中profile和filtering实现多个环境下的属性过滤
Spring boot项目分环境Maven打包,动态配置文件,动态配置项目的更多相关文章
- [DEBUG] spring boot在eclipse中用maven打包成jar访问templates报500错误
更新:打war包的话只要把html文件放在resources/templates下即可,根本不需要放外面. 配置application.yml和templates放外面这种做法,打war包确实不行. ...
- 部署项目问题(maven打包jar不对应,导致启动时一直找不到某个类)
项目是springboot+maven 打包用maven的插件package 下面是打包后的目录结构 project-1.0 和project-1.0.tar.gz是一样的 区别就是一个是压缩包 ...
- 快速搭建Spring Boot + Apache Shiro 环境
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.Apache Shiro 介绍及概念 概念:Apache Shiro是一个强大且易用的Java安全框 ...
- 【转】Spring Boot干货系列:(二)配置文件解析
转自:Spring Boot干货系列:(二)配置文件解析 前言 上一篇介绍了Spring Boot的入门,知道了Spring Boot使用"习惯优于配置"(项目中存在大量的配置,此 ...
- Spring Boot干货系列:(二)配置文件解析
Spring Boot干货系列:(二)配置文件解析 2017-02-28 嘟嘟MD 嘟爷java超神学堂 前言 上一篇介绍了Spring Boot的入门,知道了Spring Boot使用“习惯优于 ...
- maven打包 tomcat运行pom配置 或 打成jar包
maven打包 tomcat运行pom配置,同时还需要配置org.apache.tomcat.maven插件,这里省略. <groupId>com.company</groupId& ...
- Spring Boot 揭秘与实战(四) 配置文件篇 - 有哪些很棒的特性
文章目录 1. 使用属性文件2. YAML文件 1.1. 自定义属性 1.2. 参数引用 1.3. 随机数属性 1.4. application-{profile}.properties参数加载 3. ...
- 【spring boot】12.spring boot对多种不同类型数据库,多数据源配置使用
2天时间,终于把spring boot下配置连接多种不同类型数据库,配置多数据源实现! ======================================================== ...
- Spring Boot中的缓存支持(一)注解配置与EhCache使用
Spring Boot中的缓存支持(一)注解配置与EhCache使用 随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决 ...
随机推荐
- 【SpringBoot】SpringBoot日志框架(四)
日志框架介绍 在开发过程中,我们经常使用到日志来进行排查问题,我们使用的日志框架都是由2部分组成(日志API + 日志实现) 日志API(及日志抽象层)有:SLF4j(Simple Logging F ...
- winform调用webservice假死怎么解决
主线程调用外部web service,没有返回时,主线程阻塞了,界面肯定假死耗时操作都是要在工作线程里面执行的.一般情况下winform调用webservice时步骤1添加服务引用---高级----添 ...
- TCP/IP和OSI4层、7层协议介绍
1.TCP/IP全称:Transmission Control Protocol / Internet Protocol 中文翻译:传输控制协议 / 互联网协议 2.OSI4层.7层模型:
- Spring生态圈的概要说明
Spring生态圈的概要说明 以下摘抄自<Spring Boot实战>一书某章节. ================================= Spring 主要jar包 (1 ...
- ArcGIS Server 10.2忘记用户名密码的解决方案
忘记了ArcGIS Server Manager的密码,可以采用以下方法进行重置. 1.找到ArcGIS Server的安装目录 D:\Program Files\ArcGIS\Server\tool ...
- javascript 从对象数组中 按字段/属性取最大值或最小值
var array=[ { "index_id": 119, "area_id": "18335623", "name" ...
- xmlrpc与jsonrpc
RPC是Remote Procedure Call的缩写,翻译成中文就是远程过程调用,是一种在本地的机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算”,是为了提高各个分立 ...
- spring mvc 处理pojo传递对象时该对象继承父类的属性在网络接收端接收该属性值总是null,why?
//=========================== 情形一: ===============================//在网络上传递User1类对象时info属性值在网络的另一端能够接 ...
- go上传图片微信服务器<<临时素材
type WxImage struct { Type string `json:"type"` MediaId string `json:"media_id"` ...
- redis-集群(codis和Cluster)
codis 和 cluster 对比图: codis工作图: cluster工作图:(去中心化)