Gradle实战系列(二)__自动替换的配置文件
来源:互联网 发布:肖恩巴蒂尔数据 编辑:程序博客网 时间:2024/06/05 10:54
项目开发过程中,通常程序在开发-测试-上线三个阶段部署在三个不同的环境,例如连接数据库的服务器 IP 及帐号密码不同,调用的外部服务指向不同服务器。针对不同环境使用不同配置文件的问题,主要可以有两种解决方案:
占位符替换
首先建立资源文件夹
mkdir src\main\resources
在 resources 路径下建立 jdbc.properties 文件
jdbc.url=@jdbc.url@jdbc.user=@jdbc.user@jdbc.password=@jdbc.password@
接着利用 Groovy 的语法在工程文件夹中建立 config.groovy 的配置文件,对应前面建立的 jdbc.properties 文件,分别配置开发/测试/生产这三个环境的 jdbc 参数
environments { dev { jdbc { url = 'dev_ip' user = 'dev_user' password = 'dev_pwd' } } test { jdbc { url = 'test_ip' user = 'test_user' password = 'test_pwd' } } prd { jdbc { url = 'prd_ip' user = 'prd_user' password = 'prd_pwd' } }}
由于 Gradle 在执行脚本时,可以利用 -P 传入参数的方式来区分不同的环境,所以我们可以在 build.gradle 里面加上 ext 属性块,从传入的参数来改变预设的 profile 属性,假设这里透过传入 env 参数来决定当前要建构的环境
ext { profile = project['env']}
另外在自定义一个函数,根据 profile 来读取前面建立的 config.groovy 文件
def loadGroovyConfig(){ def configFile = file('config.groovy') new ConfigSlurper(profile).parse(configFile.toURL()).toProperties()}
接着改变 processResources task,将资源文件夹中的配置文件,根据 config.groovy 文件的内容来替换占位符
processResources { from(sourceSets.main.resources.srcDirs) { filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: loadGroovyConfig()) }}
在执行建构脚本时,将 env 参数传入
gradle clean build -Penv=dev
执行成功后可以在 build\resources\main 这个路径看到已经替换好的 jdbc.properties 文件,并且也会被打包进 jar 包中
jdbc.url=dev_ipjdbc.user=dev_userjdbc.password=dev_pwd
改变资源文件夹路径
假设在项目中的配置文件除了 properties 文件之外,还会有 xml 文件,首先在 config 文件夹中建立不同环境不同类型的配置文件路径
mkdir config\properties\devmkdir config\properties\testmkdir config\properties\prdmkdir config\xml\devmkdir config\xml\testmkdir config\xml\prd
并且将不同环境的配置文件都放置在对应的文件夹之下
[gradle_sample]├---[.gradle]│ ├---内容省略│├---[build]│ ├---内容省略│├---[config]│ ├---[properties]│ │ ├---[dev]│ │ │ ├---jdbc.properties│ │ ││ │ ├---[prd]│ │ │ ├---jdbc.properties│ │ ││ │ ├---[test]│ │ ├---jdbc.properties│ ││ ├---[xml]│ │ ├---[dev]│ │ │ ├---applicationContext.xml│ │ ││ │ ├---[prd]│ │ │ ├---applicationContext.xml│ │ ││ │ ├---[test]│ │ ├---applicationContext.xml│├---[gradle]│ ├---内容省略│├---build.gradle├---gradlew├---gradlew.bat├---settings.gradle
接着修改 build.gradle 里面的 sourceSets 属性块
sourceSets { main { resources { srcDir "config/properties/${profile}", "config/xml/${profile}" } }}
最后一样在执行建构脚本时,就可以看到从对应 env 参数的 config 路径下被复制过来到 在 build\resources\main 里面的 jdbc.properties 文件和 applicationContext.xml 文件
以上是本文对 Gradle 解决不同环境配置文件的方法,可以由此下载 相关文件
- Gradle实战系列(二)__自动替换的配置文件
- Gradle实战系列(一)__初体验
- Gradle实战系列(三)__多模块项目
- WCF系列(二)配置文件
- UNet实战系列(二)
- UNet实战系列(二)
- [Spring实战系列](12)Bean的自动装配
- gradle build 生成jar前替换配置文件
- Gradle系列第(二)篇---Gradle编程主要对象
- Gradle系列二
- Mybatis实战(二)配置文件详解
- Gradle相关的配置文件
- Gradle相关的配置文件
- 《gradle教程系列》二.构建gradle脚本
- mybatis系列-XML 映射配置文件(二)
- Spring boot系列:配置文件(二)
- redis学习系列(二)--配置文件了解
- Gradle 替换 默认的mavenCentral
- ThinkPHP 学习笔记 8.数据库的查询方式
- 485. Max Consecutive Ones [LeetCode]
- Oracle学习笔记(二)
- POJ2785:4 Values whose Sum is 0(二分+暴力)
- HDU1002 A + B Problem II
- Gradle实战系列(二)__自动替换的配置文件
- HDU1089 A+B for Input-Output Practice (I)
- 用maven搭建SpringMVC框架(一)
- 将mdk工程转为cmake工程探索(一)
- HDU1090 A+B for Input-Output Practice (II)
- 使用SVProgressHUD时加入自定义Gif图片
- HDU1091 A+B for Input-Output Practice (III)
- LEXSTR
- HDU1092 A+B for Input-Output Practice (IV)