博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
集成maven和Spring boot的profile功能
阅读量:6149 次
发布时间:2019-06-21

本文共 2686 字,大约阅读时间需要 8 分钟。

  hot3.png

        由于项目的需要, 今天给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文件:

ce9b6b5c573f27164c23e3487ca6c294180.jpg

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

你可能感兴趣的文章
让div固定在某个位置
查看>>
Java开发环境Docker镜像
查看>>
从无到有,WebService Apache Axis2初步实践
查看>>
任务调度(一)——jdk自带的Timer
查看>>
UIKit框架(15)PCH头文件
查看>>
整理看到的好的文档
查看>>
Linux磁盘管理和文件系统管理
查看>>
linux运维人员的成功面试总结案例分享
查看>>
Windows DHCP Server基于MAC地址过滤客户端请求实现IP地址的分配
查看>>
命令查询每个文件文件数
查看>>
《跟阿铭学Linux》第8章 文档的压缩与打包:课后习题与答案
查看>>
RAC表决磁盘管理和维护
查看>>
Apache通过mod_php5支持PHP
查看>>
发布一个TCP 吞吐性能测试小工具
查看>>
java学习:jdbc连接示例
查看>>
PHP执行批量mysql语句
查看>>
Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块
查看>>
Silverlight 如何手动打包xap
查看>>
建筑电气暖通给排水协作流程
查看>>
JavaScript面向对象编程深入分析(2)
查看>>