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

简介:
1240
乐哉码农


产生问题的背景

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

引入Maven的profile

首先介绍下profile:

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

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

具体实现步骤

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

1240
数据库默认配置

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

1240
jdbc配置文件


1240
jdbc-product


1240
jdbc-dev

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

1240
两套profile,

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

1240

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

1240

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

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

1240

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

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

1240

配置讲解:

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

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


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

1240

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


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

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

1240
乐哉码农
相关文章
|
3月前
|
Java Maven
如何用Maven打包
如何用Maven打包
111 0
|
28天前
|
Java Maven
Maven【5】在IDEA环境中配置和使用Maven
Maven【5】在IDEA环境中配置和使用Maven
60 1
|
7天前
|
Java 应用服务中间件 Maven
使用IDEA搭建SpringMVC环境,Maven导入了依赖,但是运行报错 java.lang.ClassNotFoundException
使用IDEA搭建SpringMVC环境,Maven导入了依赖,但是运行报错 java.lang.ClassNotFoundException
8 1
|
25天前
|
XML Java Maven
深入探讨Maven打包:打造精致的Zip包
本文介绍了如何使用Maven将Spring Boot项目打包并部署。首先,利用Maven Assembly Plugin创建包含JAR的ZIP文件,以便于部署和修改配置文件。该插件允许自定义打包内容和格式。在`package.xml`中定义了打包格式、依赖、脚本和资源文件的规则。接着,在POM.xml中配置插件,排除配置文件和静态资源以保持外部。最后,执行`mvn package`命令生成分发包,简化了项目的部署流程。
90 1
|
2月前
|
JSON Java Maven
SpringBoot使用git-commit-id-maven-plugin打包
【2月更文挑战第1天】 git-commit-id-maven-plugin 是一个maven 插件,用来在打包的时候将git-commit 信息打进jar中。 这样做的好处是可以将发布的某版本和对应的代码关联起来,方便查阅和线上项目的维护。至于它的作用,用官方说法,这个功能对于大型分布式项目来说是无价的。
84 0
|
2月前
|
Java Maven
Maven项目模块打包引入
Maven项目模块打包引入
25 0
|
2月前
|
存储 JavaScript Java
【Maven从入门到如土】快速使用 Maven:命令行环境
【Maven从入门到如土】快速使用 Maven:命令行环境
34 0
|
3月前
|
Java Linux Maven
IDEA的maven的package打包
IDEA的maven的package打包
27 1
|
3月前
|
Java Maven Docker
SpringBoot项目打包部署到阿里云服务器、通过Maven插件制作Docker镜像、部署项目容器、配置生产环境
SpringBoot项目打包部署到阿里云服务器、通过Maven插件制作Docker镜像、部署项目容器、配置生产环境
108 0
|
3月前
|
Java Maven
idea执行maven打包失败:java.lang.TypeNotPresentException: Type org.springframework.boot.maven.RepackageMojo
idea执行maven打包失败:java.lang.TypeNotPresentException: Type org.springframework.boot.maven.RepackageMojo