maven中profile的使用

 更新时间:2023年04月28日 11:26:23   作者:天道有情战天下  
本文主要介绍了maven中profile的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一个项目可能会有不同的环境,例如dev/stating/prod等,不同的环境的配置文件是不同的,如何根据环境快速的切换到对应的配置文件很重要。

在maven和 spring中都有一个profile的概念,下面分别说

一. 在maven中的pom文件中的profile的作用是根据不同的环境将对应的环境变量设置到项目中,如下例子

步骤一:在pom文件中写profile

<profiles>
        <profile>
            <!-- 开发环境 -->
            <id>local</id>
            <properties>
                <env>local</env>
                <profileName>local</profileName>
                <group>LOCAL_GROUP</group>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <!-- 联调开发环境 -->
            <id>dev</id>
            <properties>
                <env>dev</env>
                <profileName>dev</profileName>
                <group>DEV_GROUP</group>
            </properties>
        </profile>
        <profile>
            <!-- 测试环境 -->
            <id>test</id>
            <properties>
                <env>test</env>
                <profileName>test</profileName>
                <group>TEST_GROUP</group>
            </properties>
        </profile>
        <profile>
            <!-- 预发环境  -->
            <id>pre</id>
            <properties>
                <env>pre</env>
                <profileName>pre</profileName>
                <group>PRE_GROUP</group>
            </properties>
        </profile>
        <profile>
            <!-- 生产环境  -->
            <id>prod</id>
            <properties>
                <env>prod</env>
                <profileName>prod</profileName>
                <group>PROD_GROUP</group>
            </properties>
        </profile>
    </profiles>

步骤二:设置 resources的位置和filtering为true

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

filtering属性为true时,主要用来替换项目中资源文件(.xml、.properties)当中由 ${...} 标记的变量

步骤三:激活profile

以下两种方式可以激活:

a. mvn package时使用-P参数来指定profile,例如mvn package -P dev,这样就会把dev 这个profile中的变量设置到项目对应的变量里面,通常是通过${}和@@来注入属性

b.在对应的profile标签里面写入如下标签,代表默认激活的profile  <activeByDefault>true</activeByDefault> 

二. spring中的profile

Spring中有个注解叫做@Profile("dev"),这个注解只有在对应的profile激活才能使用,这个profile和上面的maven中的没关系,可以通过如下方式激活

一、启动Java应用时,通过-D传入系统参数

-Dspring.profiles.active=dev  

二、如果是web环境,可以通过上下文初始化参数设置

<context-param>  
    <param-name>spring.profiles.active</param-name>  
    <param-value>dev</param-value>  
</context-param>  

三 、通过自定义添加PropertySource

Map<String, Object> map = new HashMap<String, Object>();  
map.put("spring.profiles.active", "dev");  
MapPropertySource propertySource = new MapPropertySource("map", map);  
env.getPropertySources().addFirst(propertySource);  

四、直接设置Profile

env.setActiveProfiles("dev", "test"); 

五、通过操作系统的环境变量来激活

在Spring Boot项目中,如果事先在OS环境变量中定义了“SPRING_PROFILES_ACTIVE”,则会采用此处定义的配置文件

以上方式都可以设置多个profile,多个之间通过如逗号/分号等分隔。 

到此这篇关于maven中profile的使用的文章就介绍到这了,更多相关maven profile内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入理解Java垃圾回收机制以及内存泄漏

    深入理解Java垃圾回收机制以及内存泄漏

    下面小编就为大家带来一篇深入理解Java垃圾回收机制以及内存泄漏。小编觉得挺不错的,现在就分享给大家,也给的大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • 基于Zookeeper实现服务注册和服务发现功能

    基于Zookeeper实现服务注册和服务发现功能

    无论是采用SOA还是微服务架构,都需要使用服务注册和服务发现组件,本文将基于 Zookeeper 实现服务注册和服务发现功能,如果跟我一样有同样的困惑,希望可以通过本文了解其他组件如何使用 Zookeeper 作为注册中心的工作原理
    2023-09-09
  • 详细解读Java的串口编程

    详细解读Java的串口编程

    这篇文章主要介绍了详细解读Java的串口编程,而文中讲解的示例主要针对于JavaComm和RxTx这两个库,需要的朋友可以参考下
    2015-08-08
  • Mybatis的xml文件时间范围条件查询方式

    Mybatis的xml文件时间范围条件查询方式

    这篇文章主要介绍了Mybatis的xml文件时间范围条件查询方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • @JsonDeserialize和@JsonSerialize注解的使用方式

    @JsonDeserialize和@JsonSerialize注解的使用方式

    这篇文章主要介绍了@JsonDeserialize和@JsonSerialize注解的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • SpringBoot整合Drools规则引擎动态生成业务规则的实现

    SpringBoot整合Drools规则引擎动态生成业务规则的实现

    本文主要介绍了SpringBoot整合Drools规则引擎动态生成业务规则的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 通过Spring AOP实现异常捕捉机制

    通过Spring AOP实现异常捕捉机制

    在开发过程中,异常处理是一个不可忽视的重要环节,合理、优雅地处理异常不仅能提高代码的鲁棒性,还能提升系统的用户体验,本文将介绍如何通过Spring AOP实现一个高效的异常捕捉机制,使得异常处理变得更加优雅和统一,需要的朋友可以参考下
    2024-08-08
  • 实战分布式医疗挂号系统登录接口整合阿里云短信详情

    实战分布式医疗挂号系统登录接口整合阿里云短信详情

    这篇文章主要为大家介绍了实战分布式医疗挂号系统登录接口整合阿里云短信详情,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2022-04-04
  • spring boot和mybatis集成分页插件

    spring boot和mybatis集成分页插件

    这篇文章主要为大家详细介绍了spring boot和mybatis集成分页插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Java实现顺序栈的示例代码

    Java实现顺序栈的示例代码

    线性表和栈都是我们常用的数据结构,栈可以看成一种特殊状态的线性表。线性表分为顺序表和链表,使用线性表中的顺序表来实现栈时这种栈被称为顺序栈。这篇文章总结了如何使用顺序表实现栈,需要的可以参考一下
    2022-11-11

最新评论