利用MAVEN的profile 实现打包环境的切换

简介:

乐哉码农


产生问题的背景

由于在项目开发的时候,我们一般都是使用的本地库,数据库连接写的是本地的,如果我们将项目打成war的时候,里面的配置连接写的是我们本地的,当我们直接把war拷贝到服务器上面进行部署的时候,是不可能直接用的,这时候可能会有两种方法,一、在打包的时候修改数据库连接,这样我们就可以直接把war放到服务器上面,二是把压缩包拷贝到服务器上面,再修改,这样会给每次进行升级系统带来麻烦,这同样就需要一个工具帮我们去解决这些问题了,实现正式和测试环境的切换

引入Maven的profile

首先介绍下profile:

profile就是帮助我们定义一些配置,这些配置都是一套一套的,在特定的情况下动态被激活使用,也可以提供默认的属性去激活默认的一套profile,

这里主要是通过profiles创建两套profile和利用filters,resources实现配置文件的覆盖,实现环境的切换,具体步骤如下

具体实现步骤

一、首先看下默认的数据库配置文件,配置文件在resources的根目录下面


数据库默认配置

二、接着我们复制出两套配置文件出来


jdbc配置文件



jdbc-product



jdbc-dev

三、配置好数据库配置文件,我们需要在pom文件中建立对应的两套profile配置,


两套profile,

其中的env标签,是一个环境变量,我们后面会要用到,他有一个默认值是在这里面配置的,默认是dev


配置好上面的两个profile之后,会在idea面板中看到


四、配置好定义文件之后,我们需要使用filters和resources来实现配置件变量的覆盖

    Ⅰ.首先定义filters来配置使用哪个文件中的变量去替换现有的配置文件中的占位符


这里面的env就是配置的环境变量,这个值随着我们打包是勾选dev还是product动态改变的,例如和勾选dev.则用jdbc-dev里面的值去替换数据库配置文件中的占位符,例如 jdbc-dev.properties中有一个  username=lezai,则会将当前项目资源中的文件中带有${USERNAME}占位符直接使用jdbc-properties中的值替换掉

Ⅱ.替换制定资源的文件中的占位符,使用到resources。直接看配置


配置讲解:

①使用resources的includes 将打包是需要的配置文件打包进来,因为我们这里需要进行占位符替换,所以我只导入xml文件,然后将filtering设置为true,意思使用上面定义占位符过滤替换,使其生效,

②使用resources的excludes将第一步骤中排除的非xml文件导进来,但是此时不开启filtering为true,也就是需要对这些文件的占位符进行替换


五、只需要这几步就可以在部署系统时进行不同环境的切换,使用方法是打包时勾选不同的profile 


六、配置就这几步,很轻松的事件了环境的切换,特别注意的是最后一步,首先将需要进行占位符替换的使用includes包进来,并且开始filtering,最后再使用excludes将除了上面的文件包进来,filtering不开启


感谢大家能看到这里,文中讲的不正确的地方,欢迎在下方留言,我会及时修正。

欢迎大家关注我的公众号,会不定时更新技术干货。


乐哉码农
相关文章
|
10天前
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
29 3
|
24天前
|
Java Maven Android开发
【Azure Developer】VS Code打包Java maven Project 遇见 BUILD FAILURE
Unknown lifecycle phase "lean". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
|
26天前
|
缓存 IDE Java
idea的maven项目打包时没有source下的文件
【10月更文挑战第21天】idea的maven项目打包时没有source下的文件
38 1
|
1月前
|
Java 测试技术 Maven
maven 打包命令
maven 打包命令
27 6
|
1月前
|
Java Linux Maven
IDEA如何用maven打包(界面和命令两种方式)
【10月更文挑战第14天】本文介绍了两种Maven项目打包方法:命令行与IDEA界面。首先确保已安装Maven并配置环境变量,通过`mvn -v`检查安装。命令行打包需进入项目目录,执行`mvn package`,之后在`target`目录查看结果。IDEA打包则需配置Maven路径,打开Maven Projects窗口,双击Lifecycle下的`package`阶段,同样在`target`目录查找生成文件,并在Build窗口查看日志以排查问题。
708 1
|
1月前
|
Java Shell Maven
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
105 4
|
5月前
|
Java 测试技术 Maven
Maven打包使用多线程加速构建过程
Maven打包使用多线程加速构建过程
857 0
|
1月前
|
Java Maven
用graalvm将maven项目打包成可执行文件
本文介绍了如何使用GraalVM将Maven项目打包成可执行文件,包括引入依赖和插件、编写代码、执行打包命令以及运行查看结果的完整过程。
127 0
用graalvm将maven项目打包成可执行文件
|
1月前
|
Java Maven
maven打包出现没有主类的原因,详细分析并解决
本文分析了使用Maven打包Java应用时找不到或无法加载主类的问题,通常是由于未配置主类或打包时未包含依赖,并通过添加Maven插件解决了依赖问题,同时指出了JavaFX应用可能遇到的运行时组件缺失的错误。
147 0
maven打包出现没有主类的原因,详细分析并解决
|
6月前
|
Java Maven
SpringBoot项目的用maven插件打包报Test错误
SpringBoot项目的用maven插件打包报Test错误
124 1