环境配置: spring profile 与 maven profile

6人阅读 评论(0) 收藏 举报
分类:

在开发过程中,我们的软件会面对不同的运行环境,比如开发环境、测试环境、生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置、日志文件配置、以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件,这样来回修改,很容易出错,而且浪费劳动力。  
maven提供了一种方便的解决这种问题的方案,就是profile功能。

profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。

 profile定义的位置

(1) 针对于特定项目的profile配置我们可以定义在该项目的pom.xml中。(下面举例是这种方式)

(2)

(3)

SpringProfile中,Profile存在两种状态,一种为默认加载的profile(spring.profiles.default),一种为指定激活的profile(spring.profiles.active)。如果程序未指定active状态的profile,那么执行default状态的profile,如果两种状态都指定,则优先执行或选择active状态的profile

maven的优点在于项目构建,通过命令来构建不同环境的包,
spring则是通过初始化参数和设置环境变量来设置激活的profile

文件结构
文件结构

pom.xml配置
1、profile配置

<profiles>
        <!--开发环境-->
        <profile>
            <id>dev</id>
            <properties>
                 <!-- package.environment 为自己定义的名字-->
                <package.environment>dev</package.environment>
            </properties>
            <!-- 默认激活该profile节点-->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <!--测试环境-->
        <profile>
            <id>pre</id>
            <properties>
                <package.environment>pre</package.environment>
            </properties>
        </profile>
        <profile>
            <!-- 生产环境 -->
            <id>pro</id>
            <properties>
                <package.environment>pro</package.environment>
            </properties>
        </profile>
    </profiles>

2、resources配置

 <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>environment/dev/**</exclude>
                    <exclude>environment/pre/**</exclude>
                    <exclude>environment/pro/**</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources/environment/${package.environment}</directory>
            </resource>
        </resources>
    </build>

以上配置会将src/main/resources下除了<excludes>标签下的文件编译进classpath下。

查看评论

多环境支持-Maven和Spring的Profile

多环境支持是每个项目都要面对的问题,且不说很多环境,哪怕简单的项目也是需要区分本地开发的环境和正式运行的生产环境,不同的项目架构有不同的实现方式,这篇文章先说明利用Profile来进行配置的方式。...
  • xiaosunzhu
  • xiaosunzhu
  • 2017-08-04 11:32:43
  • 1056

Maven profile整合Spring profile

在Maven的pom.xml和Spring框架中,都有profile这个概念。profile是用于区分各种环境的,例如开发环境、测试环境、正式环境等。Maven的profile经常用于在打包时根据指定...
  • loveyaqin1990
  • loveyaqin1990
  • 2016-06-12 15:20:16
  • 2206

集成maven和Spring boot的profile功能

由于项目的需要, 今天给spirng boot项目添加了profile功能。再网上搜索了一圈,也没有找到满意的参考资料,其实配置并不难,就是没有一个one stop(一站式)讲解的地方,所以有了写这篇...
  • ggj20ss
  • ggj20ss
  • 2016-02-19 16:10:40
  • 985

Maven与Spring profile的结合使用

Maven与Spring profile的结合使用
  • zyf_balance
  • zyf_balance
  • 2015-12-23 14:08:50
  • 2256

Spring Boot Profile 与Maven Profile 集成实践

在现代的项目开发中多人协作、多环境部署已经是必不可少的软件开发方式,笔者目前正在开发的一个基于Spring Boot 项目环境就有四套之多,包括(本地、测试、演练、生产)。尤其是现代的大型项目开发,构...
  • TRAMP_ZZY
  • TRAMP_ZZY
  • 2017-08-11 19:11:00
  • 590

Maven与Spring Boot的profile功能集成

profile是什么?为什么需要profile? 在实际的项目开发中,我们往往需要根据不同的环境进行打包资源,比如打测试环境的包时需要加入测试环境的配置文件,比如数据库的连接信息等等,打生产环境的包...
  • CSDN_LAFF
  • CSDN_LAFF
  • 2017-08-04 22:05:50
  • 645

springboot 读取maven profile 变量 通配符

build> plugins> plugin> groupId>org.springframework.bootgroupId> artifactId>spring-boot-...
  • gj5266400
  • gj5266400
  • 2017-07-10 13:48:46
  • 534

详解Spring中的Profile

前言 由于在项目中使用Maven打包部署的时候,经常由于配置参数过多(比如Nginx服务器的信息、ZooKeeper的信息、数据库连接、Redis服务器地址等),导致实际现网的配置参数与测试服务...
  • jeffleo
  • jeffleo
  • 2017-05-08 20:20:34
  • 633

[Spring Boot 系列] 集成maven和Spring boot的profile功能

由于项目的需要, 今天给spirng boot项目添加了profile功能。再网上搜索了一圈,也没有找到满意的参考资料。所有有了写这篇博客的想法。由于本人水平有限,文中有任何错误和纰漏欢迎大家反馈。 ...
  • lihe2008125
  • lihe2008125
  • 2015-12-31 19:56:41
  • 42307

解决maven工程中使用spring-boot后导致的profile多环境配置失效的问题

spring-boot引用方式官方推荐是使用: parent> groupId>org.springframework.bootgroupId> artifactId>...
  • qzlmhy
  • qzlmhy
  • 2016-11-28 11:44:13
  • 1371
    个人资料
    持之以恒
    等级:
    访问量: 1605
    积分: 303
    排名: 25万+