由于项目的需要, 今天给spirng boot项目添加了profile功能。再网上搜索了一圈,也没有找到满意的参考资料,其实配置并不难,就是没有一个one stop(一站式)讲解的地方,所以有了写这篇博客的想法。由于本人水平有限,文中任何错误和纰漏欢迎大家反馈。希望本文可以给你带来帮助。 本文实现的目标:

  1. 使用了maven的profile功能
  2. 使用了Spring Boot的profile功能
  3. 集成了1和2的功能
  4. 在eclipse中运行mvn工程,使用开发环境的profile。
  5. 通过mvn在命令行中打包时,可以指定相应的profile。

什么是profile,解决什么问题呢?举个例子。一般在开发项目的时候要有多个环境,如开发环境、测试环境、生产环境,他们的配置文件一般不同。当我们要向各个环境发布程序时,需要人工处理这些配置文件,这显然麻烦且易错。有了profile,一切问题就简单了。只要在maven打包时使用下面命令即可。

mvn clean package -Dmaven.test.skip=true -P prod  

解释一下, -P prod 就是告诉maven要使用名字为prod的profile来打包,即所有的配置文件都使用生产环境(prod是自己定义的,在这里自定义为生产环境)

实现思路简述: maven支持profile功能,当使用maven profile打包时,可以打包指定目录和指定文件,且可以修改文件中的变量。spring boot也支持profile功能,只要在application.properties文件中指定spring.profiles.active=xxx 即可,其中xxx是一个变量,当maven打包时,修改这个变量即可。

具体实现:

A段,介绍coolpro工程的配置。

这个工程只需要修改pom.xml文件即可,需要定义具体maven的profile。定义完毕之后,当我们使用mvn clean package -P dev 时,maven就知道了profileActive=dev这个属性生效了。其中profileActive可以自己定义,就是一个maven的自定义属性。

pom.xml文件如下:

B段,介绍coolpro-api工程的配置

这个工程是一个web工程,主要是想根据指定的profile配置相应的spring boot运行环境。如:如果profile是dev,配置web服务器的监听端口为8010;profile为test,则端口为8020;profile为prod,则端口为8030。

工程中有4个文件:

application.properties, 包含通用配置的文件。文件中有spring.profiles.active=@profileActive@的属性。spring boot的profile是通过spring.profiles.active属性来配置的,这里的profileActive和上面coolpro工程中配置的profileActive属性名要一致。这样,在运行mvn命令时,maven就会帮我们将@profileActive@替换成指定的profile。

  • application-dev.properties, 当mvn -P dev时, 需要打包这个文件。
  • application-test.properties, 当mvn -P test时, 需要打包这个文件。
  • application-prod.properties, 当mvn -P prod时, 需要打包这个文件。

pom.xml配置:


application.properties文件:

其他3个文件见截图:

C段,介绍coolpro-core工程的配置

配置完成了。看效果。

1 在Eclipse环境中,直接运行项目。

2 使用maven命令,打包这个应用。

1)以开发环境打包:mvn clean package -Dmaven.test.skip=true -P dev -e

结果如下:

查看api工程:

查看core工程:

以此类推, 可以运行

mvn clean package -Dmaven.test.skip=true -P test -e

mvn clean package -Dmaven.test.skip=true -P prod -e

注意两点:

1 在属性文件中替换变量时,使用@符合。

最开始,使用$符号,就是不能替换,在网上搜索一下,原来是maven的maven-resources-plugin可以定义这个替换的符号。通过eclipse提供的Maven Pom editor编辑器打开pom.xml文件,在“Effective POM”选项卡中,可以看到定义的是@这个符号。

2 怎么在启动spring boot应用时,打印正在使用的profile,避免配置错误呢?可以参考如下代码。

public static void main(String[] args) {  ApplicationContext ctx = SpringApplication.run(RestApiApplication.class, args);  String[] activeProfiles = ctx.getEnvironment().getActiveProfiles();  for (String profile : activeProfiles) {  logger.warn("Spring Boot 使用profile为:{}" , profile);  }
}  

参考:

http://docs.spring.io/spring-boot/docs/current/reference/html/ http://www.tuicool.com/articles/NjqAF3 http://blog.csdn.net/jbgtwang/article/details/8642979 http://zilongsky-gmail-com.iteye.com/blog/2032001 http://www.huangyunkun.com/2015/01/01/run-code-after-spring-boot-started/

转载于:https://my.oschina.net/Declan/blog/1800933

集成maven和Spring boot的profile功能相关推荐

  1. dubbo yml配置_Spring boot 的profile功能如何实现多环境配置自动切换

    通常服务端应用开发需要经过以下几个流程: 开发 -> 测试 -> RC验证 -> 上线 这就涉及到四个不同的环境,开发环境.测试环境.RC环境以及生产环境,为了避免不同环境之间相互干 ...

  2. Spring Boot配置 profile

    Spring Boot配置 profile 配置profile作用:我们在开发Spring Boot应用时,通常同一套程序会被安装到不同环境,比如:开发.测试.生产等.其中数据库地址.服务器端口等等配 ...

  3. Maven 搭建spring boot多模块项目(附源码)

    Maven 搭建spring boot多模块项目 备注:所有项目都在idea中创建 1.idea创建maven项目 1-1: 删除src,target目录,只保留pom.xml 1-2: 根目录pom ...

  4. Java工作笔记-使用Maven创建Spring Boot并生成war包外部tocamt运行

    目录 基本概念 代码与实例 基本概念 目前发现很多Java项目都是直接使用Maven作项目管理,在Maven中配置依赖,比如Spring boot完成操作,在经历了这么多操作后,还发现大家喜欢把Mav ...

  5. Spring Boot实现验证码功能

    ✨Spring Boot实现验证码功能 验证码的作用 案例要求 前端页面准备 随机验证码工具类 后端控制器 测试

  6. springboot 集成jpa_基于Spring Boot+JPA Restful 风格的数据

    第一章 Restful简介 Restful是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服 务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次, ...

  7. 邮件发送类_10 分钟实现 Spring Boot 发生邮件功能

    基础知识 什么是SMTP? 什么是IMAP? 什么是POP3? IMAP和POP3协议有什么不同呢? 进阶知识 什么是JavaMailSender和JavaMailSenderImpl? 如何通过Ja ...

  8. 具有Spring Boot和数据功能的Java头优先弹性搜索

    在本文中,我将为您提供有关如何在Java项目中使用Elastic Search的简单介绍. 由于Spring Boot是开始我们项目的最简单,最快的方法,因此我选择使用它. 此外,我们将大量使用心爱的 ...

  9. 操作方法:Maven的Spring Boot和Thymeleaf

    Spring Boot是一款很棒的软件,可让您在几秒钟内引导Spring应用程序. 它确实有效. 尽可能少的配置即可上手. 而且仍然可以更改默认值. 让我们看看用Thymeleaf和Maven引导Sp ...

  10. Spring Boot学习笔记:Spring Boot的Web功能

    文章目录 一.Spring Boot的Web支持 二.Thymeleaf模板引擎 (一)Thymeleaf基础知识 1.引入Thymeleaf 2.访问Model数据 3.Model中的数据迭代 4. ...

最新文章

  1. BelgiumTS交通数据集分类-pytorch版
  2. C++中的(unsigned int)代表的意思
  3. python元组怎么使用_Python 2.7 学习笔记 元组的使用
  4. 梯度下降优化算法综述(转载)
  5. c gui qt 4编程第二版_一本专门学习PyQt5 GUI编程的书
  6. ListView分组实现方案(一)
  7. python定义和调用函数
  8. 水箱液位计算机控制系统设计,水箱水位PLC自动控制系统的设计_吕宁.pdf
  9. 【Verilog基础】Verilog语法之force和release
  10. Robo 3T 使用教程
  11. C++ 实现CRC循环冗余校验码
  12. LightDM详细介绍
  13. 关于Ultraiso无法写入硬盘映像的相关解决办法
  14. 【89元】爱乐生 上臂式语音电子血压计测量仪 家用医用全自动智能大屏 老人尊享 LZX-B1681-C标准款...
  15. 【兴趣书签】为什么观测之后量子态会坍塌
  16. teamviewer连接不上的原因及解决方法有哪些
  17. MIC的常见问题分析
  18. 带有默认值的参数一定位于参数列表的末尾
  19. 对话李志飞:出门问问最早将于2019年底考虑上市
  20. 葡萄酒评价问题_葡萄酒有设计问题

热门文章

  1. 软件工程 -- 开发模型
  2. 定制一款铝合金型材的流程
  3. matlab 关闭mdl,双击m文件和mdl文件重新打开一个matlab主程序
  4. c语言必背数据结构_c语言必背代码有哪些?
  5. 一个很好用的,免费的UML在线画图网站
  6. c语言swustoj括号匹配问题,swust-oj 西南科技大学oj练习题解 150+道 - 下载 - 搜珍网...
  7. OpenCV——图像二值化
  8. 批量修改图片 *jfif 格式
  9. 两种方式对线性规划问题求解详细步骤:【Excel 2016】与【Python 编程】
  10. 电商ERP软件、订单管理系统、库存管理系统