[转]Maven 区分开发环境和测试环境配置两种方式

本文介绍Maven项目如何区分开发和测试环境配置,包括过滤方式和选择打包方式两种方法,实现不同环境使用不同配置。

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

== 作者:sunxiakun 原文:https://blog.youkuaiyun.com/sunxiakun/article/details/65444744 ==

 项目开发过程中,如果一个项目经常发布,那么在打包之前会不断的修改配置文件,这无疑是很麻烦的一件事情。
 今天我介绍下这个问题怎么解决。

** 注意:本配置的前提是项目必须是MAVEN项目。**

方法一:(过滤方式)

在这里插入图片描述

第一步、创建配置文件

在项目的src/main/filter目录下创建 development.properties product.properties 两个文件。
development是开发配置内容。product是正式配置内容
(通过连接不同的数据库来模拟演示)
例如development:

driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc\:mysql\://192.168.1.5:3306/testdev?useUnicode\=true&characterEncoding\=utf8
jdbc_username=sun
jdbc_password=123456

product如下:

driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc\:mysql\://192.168.1.5:3306/testpro?useUnicode\=true&characterEncoding\=utf8
jdbc_username=sx
jdbc_password=124565

第二步:配置需要读取的配置文件

system.properties中需要变化的变量使用参数进行配置,如

driverClassName=com.mysql.jdbc.Driver
jdbc_url=${jdbc_url}
jdbc_username=${jdbc_username}
jdbc_password=${jdbc_password}

注意:${jdbc.url} 直接对应上面配置的development.properties或product.properties文件中的名称。

第三步:配置MAVEN 的 pom.xml文件

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <!-- 测试环境 -->
            <env>development</env>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <!-- 正式环境 -->
            <env>product</env>
        </properties>
    </profile>
</profiles>
<build>
    <finalName>web</finalName>
    <filters>
        <filter>src/main/resources/filter/${env}.properties</filter>
    </filters>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>filter/*.properties</exclude>
            </excludes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

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

		<id>dev</id>
        <properties>
            <!-- 测试环境 -->
            <env>development</env>
        </properties>

key-value
env=development(可以有多个键值对)
默认启用的是dev环境配置:

<activation>
           <activeByDefault>true</activeByDefault>
</activation>

​配置文件路径,此路径可以自定义:

<filter>src/main/resources/filter/${env}.properties</filter>

​maven中配置文件目录:
src/main/resources

第四 步:打包

​打本地包 mvn -Pdev install或者mvn install(因为本例activeByDefault配的为true)
​打产品包 mvn -Pprod install

结果:src/main/resources/config/system.properties根据mvn -P 参数决定值

mvn clean install -Pprod -DskipTests

方法二:(选择打包方式)

在这里插入图片描述
pom.xml内容:

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <!-- 测试环境 -->
            <env>development</env>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <!-- 正式环境 -->
            <env>product</env>
        </properties>
    </profile>
</profiles>
<build>
    <finalName>web</finalName>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <!-- 资源根目录排除各环境的配置,使用单独的资源目录来指定 -->
            <excludes>
                <exclude>development/*</exclude>
                <exclude>product/*</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>src/main/resources/${env}</directory>
        </resource>
    </resources>
</build>

war文件结构(解压后):
​打本地包 mvn -Pdev install或者mvn install(因为本例activeByDefault配的为true)
在这里插入图片描述
打产品包 mvn -Pprod install
在这里插入图片描述

注意:打包时请先mvn clean一下,否则可能两类配置文件同时存在引起误解
如果要带上文件夹:

 <resource>
            <directory>src/main/resources/${env}</directory>
 </resource>

替换为

<resource>
    <directory>src/main/resources</directory>
    <includes>
        <include>${env}/*.properties</include> 
       <!--使用<include>${env}</include>则加不进去-->
    </includes>
</resource>

在这里插入图片描述

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值