Maven多环境配置实战 filter

目前在开发一个wap项目,主要有开发、测试和最终部署上线几个阶段,每个阶段对配置(数据库、日志)都有不同的设置。以前都是以开发环境为主,在测试和部署上线时由部署工程师负责修改配置并上线。但是公司并非都有一个项目,我们也不是只负责一个项目,这样的工作方式导致每每上线时大家都心惊胆颤,实在忍受不了折磨,决定研究下maven下如何解决这个问题。找到方案后,不敢独享,将结果向大家介绍下。思路: 
    几个环境中主要的不同可以概括为数据库配置和log日志路径配置以及外部依赖的接口配置不一样,但是我们这里简单起见,假设只考虑数据库配置。 
    这样的话,如果能实现在生成不同的发布包时对资源进行不同的替换就可以达到目的了。经过研究maven,确定了最终方案。最终方案: 
  首先需要在pom文件中确定filter和要filter的资源,这是通过在build节点中添加filter和resource来实现的,示例如下: 
    <filters> 
    <filter>src/main/filters/filter-${env}.properties</filter> 
    </filters> 
    <resources> 
    <resource> 
    <directory>src/main/resources</directory> 
    <filtering>true</filtering> 
    </resource>    
    </resources> 
上述配置表示要对src/main/resources下的资源进行过滤,因为该目录下没有二进制文件,所以没有excluding。过滤时采用的过滤文件为src/main/filters/filter-${env}.properties文件,其中${env}是一个变量,表示当前使用的环境,这是通过在pom文件中通过profile定义的,如下所示: 
    <properties> 
  <env>dev</env> 
  </properties> 
  <profiles> 
  <profile> 
    <id>dev</id> 
    <properties> 
      <env>dev</env> 
    </properties> 
  </profile> 
  <profile> 
    <id>test</id> 
    <properties> 
      <env>test</env> 
    </properties> 
  </profile> 
  <profile> 
    <id>product</id> 
    <properties> 
      <env>product</env> 
    </properties> 
  </profile> 
</profiles> 
其中斜体字部分表示缺省的变量值,这样在开发时就不用每次指定这个值。在测试和部署上线时分别通过-P传入当前的profile id,这样maven就会将env变量设置为对应的值,从而导致使用不同的filter文件来对resources下的文件进行过滤替换。 
例如:当调用maven package时传入-Pdev(因为我们将dev设置为默认,所以也可以不传)参数,则会使用 
filter-dev.properties中的内容来替换resources目录中的配置文件,具体到我们的项目就是db.properties,内容如下: 
....... 
jdbc.connection.url=${xiangmu.jdbc.url} 
jdbc.connection.username=${xiangmu.jdbc.username} 
jdbc.connection.password=${xiangmu.jdbc.password} 
............... 
filter-dev.properties文件内容如下: 
................ 
xiangmu.jdbc.url=jdbc:mysql://localhost:3306/xiangmu?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8 
xiangmu.jdbc.username=root 
xiangmu.jdbc.password=abcdefg 
................. 
这样在编译结束后 
db.properties的内容就会变为: 
jdbc.connection.url=jdbc:mysql://localhost:3306/xiangmu?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8 
jdbc.connection.username=root 
jdbc.connection.password=abcdefg

原文地址:https://www.cnblogs.com/uoar/p/9847774.html

时间: 2024-08-30 17:59:49

Maven多环境配置实战 filter的相关文章

Maven多环境配置

多数项目都会有开发环境.测试环境.生产环境,各个环境配置可能都会不一样,于是在构建时,会涉及到环境配置的切换.来回手工修改配置,效率低下,容易出错.可以配置多个含有不同环境配置的Profile,在构建时指定构建环境,达到多环境下快速灵活构建的目的. 项目结构: config.properties: jdbc_driver_class=${jdbc.driver.class} jdbc_connection_url=${jdbc.connection.url} jdbc_username=${jd

maven(六),外置maven运行环境配置

外置maven eclipse内置的maven插件是固定版本,如果要用其他版本的maven,可以使用外置maven 下载地址: http://maven.apache.org/download.cgi   window系统下载 apache-maven-3.3.9-bin.zip, 解压 进入eclipse首选项--maven--installations--add--选择刚解压的maven目录--完成 如图第一行是eclipse内置maven3.3.3版本,第三行是我们刚刚添加的3.3.9版本

eclipse+maven的环境配置

软件152唐伟 1.1准备以下压缩包 1.JDK1.7 文件:jdk1.7.rar 2. eclipse-jee-mars-2 文件:32位系统准备eclipse-jee-mars-2-win32.zip,64位系统准备eclipse-jee-mars-2-win32-x86_64.zip 3.maven 文件:maven-3.3.9.rar 4.maven仓库(可以从网上下载,但是速度慢) 文件:.m2.rar 1.2安装(解压) 1.选择一个工作盘,如E:盘,建立目录jee 2. 将压缩包放

Maven的环境配置

一.准备材料及环境 Maven:Maven 3.5.3  JDK:C:\Program Files\Java\jdk1.8.0_171 二.下载地址: Maven:http://maven.apache.org/download.cgi 三.环境变量设置 此处Java环境设置将省略. maven配置: 1.解压下载的Maven至指定路径,如:D:\Maven\apache-maven-3.5.0 注意bin文件夹的位置在apache-maven-3.5.0下面. 2.设置MAVEN_PATH 3

Eclipse+Tomcat+MAVEN开发环境配置

https://blog.csdn.net/zhshulin/article/details/30779873 补充: 1.eclipse配置tomcat window--preferences--server--runtime  environment--Add, 我下载的tomcat放在C:\Program Files\Apache\apache-tomcat-9.0.12,这里选择Apache Tomcat v9.0, browse选择tomcat安装路径C:\Program Files\

Maven 利用 profile 进行多环境配置

我们在进行项目的多环境配置时,有很多种方式供我们选择,比如 SpringBoot 自带的 application-dev.yml.maven 的 profile 等.这里介绍的就是如何利用 profile 进行多环境配置. 首先,在 pom.xml 中添加你需要的 profile 配置: <profiles> <!-- 开发环境 默认激活--> <profile> <id>dev</id> <properties> <env&g

Maven配置、第三方依赖jar包打包以及Profiles多环境配置

由一次打包部署失败引发的深入探索┑( ̄▽  ̄)┍ 一.Maven配置 1.概览 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/

【Cocos2D-x 3.5实战】坦克大战(1)环境配置

前言: 最近课比较少,空闲时间比较多,一有时间就东想西想,想着想着就突然想到做手机游戏(android)了,学习下CoCos2d.看了一些CoCos2D的相关文档和教程,觉得是时候实战了,但是苦于没有什么新奇的游戏点子,只有写下被儿时玩过的坦克大战了(主要素材好找).而这个系列的文章来记录下我的开发过程. 开发环境: Win7(x64) VS2012  下载地址: http://www.itellyou.cn/ Eclipse  下载地址:http://www.eclipse.org/downl

Java-Maven(四):Eclipse集成Maven环境配置

一般maven都需要集成到IDE上使用的,而不是单独的使用,常见的maven可集成IDE:eclipse.IntelliJ IDEA.但这里就只学习eclipse集成maven的基础上,进行maven环境配置. eclipse的maven插件安装: 大多情况来说下载eclipse都默认已经集成了maven插件,验证是否集成eclipse菜单Window->Preferences 如果实在不行,可以在eclipse marketplace中查找maven,找到与当前eclipse版本一致的插件直接