Maven profile环境切换

本文介绍了Maven的profile特性,用于在不同的环境(如本地、测试、线上)中切换配置。通过配置resources和testResources来指定编译资源路径,或者使用filter进行资源Key的替换,实现不同环境的配置差异。文中列举了两种具体实现方式,并展示了相应的maven配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

profile可以配置一系列信息,使用mvn clean compile -Pxx激活特定的profile和其下配置信息,示例:

    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
        </profile>
        <profile>
            <id>prd</id>
            <properties>
                <env>prd</env>
            </properties>
        </profile>
    </profiles>

build中使用resources配置指定编译资源文件路径

  • resources 项目资源文件
  • testResources 测试资源文件
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>src/main/test/resources</directory>
            </testResource>
        </testResources>
    </build>

场景

项目发布时,本地环境、测试环境和线上环境通常使用的配置都不同,因此可以使用profile实现不同环境配置切换

第一种方式,使用resource配置实现,首先目录结构如下:

src
|___main
    |___config
        |___dev
            |___conf.properties
            |___jdbc.properties
        |___prd
            |___conf.properties
            |___jdbc.properties
        |___test
            |___conf.properties
            |___jdbc.properties
    |___resources
        |___spring-dao.xml
        |___spring-service.xml
        |___spring-web.xml

maven配置如下:

<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>src/main/config/${dev}</directory>
            </resource>
        </resources>
    </build>

    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
        </profile>
        <profile>
            <id>prd</id>
            <properties>
                <env>prd</env>
            </properties>
        </profile>
    </profiles>

第二种方式,使用filter替换资源Key,目录如下:

src
|___main
    |___config
        |___dev
            |___filter.properties
        |___prd
            |___filter.properties
        |___test
            |___filter.properties
    |___resources
        |___spring-dao.xml
        |___spring-service.xml
        |___spring-web.xml
        |___conf.properties
        |___jdbc.properties

maven配置如下:

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <filters>
            <filter>src/main/config/${env}/filter.properties</filter>
        </filters>
    </build>

    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
        </profile>
        <profile>
            <id>prd</id>
            <properties>
                <env>prd</env>
            </properties>
        </profile>
    </profiles>

会使用src/main/config/${env}/filter.properties文件中的key=value的value替换src/main/resources目录下,${key}引用的地方

除了使用filter指定文件的方式,也可以在profile中配置

<profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
                <jdbc.url>jdbc:mysql://localhost:3306/dbName?useUnicode=true&amp;useSSL=true</jdbc.url>
            </properties>
        </profile>
        <profile>
            <id>prd</id>
            <properties>
                <env>prd</env>
            </properties>
        </profile>
    </profiles>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值