maven使用profile动态配置(IDEA演示)

6 篇文章 1 订阅
3 篇文章 0 订阅

简介

使用Maven的profile来切换不同环境(开发/测试/发布生产)的配置文件

需求简介

通过把不同环境的配置参数信息,放到不同环境的配置文件里(例如:dev.properties开发环境配置文件).Maven在打包的时候根据选择不同的环境(例如dev:生产环境)调用对应的配置文件(dev.properties)中的属性值,替换其余配置文件里引用的变量(本例替换datasource.properties里的${key}).

开工

配置几个环境

打开pom.xml,添加如下代码.下面示例内容提供了3种环境模式,可以根据需求自行添加/删除模式.

<profiles>
        <profile>
            <!-- 本地开发环境 -->
            <id>dev</id>
            <properties>
             <!-- profiles.active 可以改为其他非关键字名字,env也可以,但是注意上下几个的标签要一致,本次统一使用的profiles.active-->
                <profiles.active>dev</profiles.active>
                <!--也可以配置其他属性,供使用;比如下面这个属性可以配置在maven打包跳过测试位置赋值 使用${skiptestconf}-->
                <skiptestconf>false</skiptestconf>
            </properties>
            <activation>
                <!-- 设置默认激活这个配置 -->
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <!-- 发布环境 -->
            <id>prod</id>
            <properties>
                <profiles.active>prod</profiles.active>
                 <skiptestconf>true</skiptestconf>
            </properties>
        </profile>
        <profile>
            <!-- 测试环境 -->
            <id>test</id>
            <properties>
                <profiles.active>test</profiles.active>
                <skiptestconf>true</skiptestconf>
            </properties>
        </profile>
    </profiles>

<build>
  <plugins>
  <!--其余 省略; -->
		<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18.1</version>
                <configuration>
                <!--这里使用了profilie里的属性skiptestconf-->
                    <skipTests>${skiptestconf}</skipTests>
                    <testFailureIgnore>${skiptestconf}</testFailureIgnore>
                </configuration>
            </plugin>

        </plugins>


 
</build>

添加不同环境配置文件引用

继续编辑pom.xml .注意路径,本例中间路径是resource 不是resources

<build>
	 <filters>
 		<filter>src/main/resource/profiles/${profiles.active}.properties</filter>
	</filters>
</build>

去项目目录按照上面目录创建文件夹和文件,见下图
src/main/resource/profiles/

在这里插入图片描述

修改配置文件

修改环境配置文件

本次以修改数据库配置链接为例子演示.
编辑dev.properties,本例提供给datasouce.properties读取.

注意:这里给每个属性加了前缀 profile. 为了跟原来属性区分,如果名字一样之后${key}取值会有分歧问题
#主库连接
profile.master.jdbc.url=jdbc:mysql://192.168.1.111:3306/db1?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
profile.master.jdbc.username=rootDev
profile.master.jdbc.password=pwdDev

编辑test.properties

#主库连接
profile.master.jdbc.url=jdbc:mysql://192.168.1.222:3306/db2?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
profile.master.jdbc.username=rootTest
profile.master.jdbc.password=pwdTest

节省篇幅(我要偷懒)编辑prod.properties略…

修改原有数据库配置文件

本项目使用的数据库配置文件名是datasource.properties.根据自己需求也可以修改一些xml配置文件,调用变量用法一致.
注意下面引用的${内容跟配置的dev/test.properties里的key一致}

#主库连接
master.jdbc.driver=com.mysql.jdbc.Driver
master.jdbc.url=${profile.master.jdbc.url}
master.jdbc.username=${profile.master.jdbc.username}
master.jdbc.password=${profile.master.jdbc.password}

配置resources路径

由于不是标准的maven项目目录结构,所以手动指认resources目录为resource


        <resources>
            <resource>
                <directory>src/main/resource</directory>
                <!--打包时不打包我们的多个版的环境配置文件 -->
                <excludes>
                    <exclude>profiles/*</exclude>
                </excludes>
                <!-- 必要否则maven打包读取环境配置文件不生效-->
                <filtering>true</filtering>
            </resource>
		</resources>

尝试效果

idea里打开maven项目的窗口
在这里插入图片描述
打开idea的maven界面后,可以看到下面界面
在这里插入图片描述
maven窗口界面中已经有了profiles的三种配置,默认是dev(配置文件配置过),可以勾选想测试的配置文件版本dev/prod/test三种查看打包效果

注意:profiles下面的dev/prod/tes可以多选,还没测试过多选maven打包效果,尽量避免多选引起未知的意外结果.

先clean下项目,再install下看打包效果

注意:确认下图中的target文件夹确定不存在了,有时候因为target下内容被打开状态或者项目运行中导致clean失败

等Maven install成功结束后
在这里插入图片描述
在项目目录上找到我们测试的数据库配置文件datasource.properties

#主库连接
master.jdbc.driver=com.mysql.jdbc.Driver
master.jdbc.url=jdbc:mysql://192.168.1.111:3306/db1?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
master.jdbc.username=rootDev
master.jdbc.password=pwdDev

也可以查看war包项目下的配置文件也随着修改了.节省篇幅就不再演示了(懒)
有错误或者问题欢迎留言沟通讨论~

其他使用

如果有时候希望把不同环境下的文件(例如:某些文件适配不同操作系统)也对应环境打包,推荐建立dev/test/prod的文件夹来做,方便打包时哪个文件夹被包含/不包含.

遇到的坑

如果是读取properties里的内容放入xml中,是不需要填写转义符的.

#反向例子:properties里的&符号
profile.master.jdbc.url=jdbc:mysql://192.168.9.120:3306/database?useUnicode=true&amp;characterEncoding=UTF-8
#正向例子:应该直接使用&符号即可.
profile.master.jdbc.url=jdbc:mysql://192.168.9.120:3306/database?useUnicode=true&characterEncoding=UTF-8

参考的博客

https://blog.csdn.net/java_collect/article/details/83870215

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Maven是一个Java项目管理工具,它可以帮助我们自动化构建、依赖管理和项目报告生成等任务。下面是安装和配置Maven 4.0以及在IntelliJ IDEA使用Maven的步骤: 1. 下载和安装Maven: - 访问Maven官方网站(https://maven.apache.org/),找到最新版本的Maven下载链接。 - 下载对应操作系统的二进制压缩包(.zip或.tar.gz)。 - 解压缩下载的压缩包到你想要安装的目录。 2. 配置环境变量: - 在系统环境变量中添加Maven的安装目录。将Maven的`bin`目录路径添加到`PATH`变量中。 3. 验证安装: - 打开命令行终端,运行`mvn -v`命令,如果能正确显示Maven的版本信息,则表示安装成功。 4. 配置IntelliJ IDEA: - 打开IntelliJ IDEA,点击菜单栏的"File" -> "Settings"。 - 在弹出的窗口中,选择"Build, Execution, Deployment" -> "Build Tools" -> "Maven"。 - 在"Maven home directory"字段中,选择你安装Maven的目录。 - 点击"OK"保存配置。 5. 创建Maven项目: - 在IntelliJ IDEA中,点击菜单栏的"File" -> "New" -> "Project"。 - 在左侧的面板中选择"Maven",然后点击"Next"。 - 输入项目的基本信息,如"Group Id"、"Artifact Id"等。 - 选择项目的存储路径,然后点击"Next"。 - 在"Project SDK"中选择你的Java SDK版本,然后点击"Next"。 - 在"Additional Libraries and Frameworks"中选择需要的框架和库,然后点击"Next"。 - 最后点击"Finish"完成项目创建。 至此,你已经成功安装和配置Maven,并在IntelliJ IDEA中创建了一个Maven项目。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值