美文网首页Gradle中文用户组程序员技术干货
[Gradle中文教程系列]-跟我学Gradle-7.4:打包

[Gradle中文教程系列]-跟我学Gradle-7.4:打包

作者: PKAQ | 来源:发表于2017-08-09 10:32 被阅读471次

    上一篇:为Web工程打不同环境包

    通过配置文件支持多环境构建

    除了通过传入参数加载不同目录下的properties文件来实现多环境打包之外,还有一种更便捷的方式来实现这种操作.
    借助Groovy的ConfigSlurper特性可以简洁而明快的达到多环境打包的目的.打包时候仅需通过-D参数传入目标环境变量即可如:gradle build -Denv=dev,这里可以通过添加gradle.properties文件设置默认的环境变量值.

    比如当前有如下需求:

    • 需要根据传入的变量参数进行不同环境打包
    • 需要根据不同环境参数改变esources目录下属性文件\xml文件等文件的内容

    1.与build.gradle平级建立config.groovy,这里的命名可以随意.

    environments {
        // 开发环境
        dev {
            db {
                username = "dev"
                password = 'devpwd'
            }        
        }
        // 线上环境
        production { 
            db {
                username = "prod"
                password = 'prodpwd'
            }        
        }
    }
    

    2.修改build.gradle

    引入ReplaceToken

    import org.apache.tools.ant.filters.ReplaceTokens
    

    处理资源文件时进行加载替换

    processResources {
        println "==> Load configuration for $env"
        def config =  new ConfigSlurper(env).parse(file("config.groovy").toURI().toURL()).toProperties()
        
       from(sourceSets.main.resources.srcDirs) {
            filter(ReplaceTokens, tokens: config, beginToken : '${', endToken : '}')
        }
        
    }
    
    

    默认情况下ReplaceTokens会将@attribute@的值替换成目标值,这里我们修改占位描述符为${attribute}

    经过上面的操作,在执行打包命令时,Gradle会加载config.groovy文件中的配置对src/main/resources资源目录下的资源文件进行替换,注意这里替换的是所有资源文件(properties/xml/txt等)中的占位符,如果只想替换properties文件可以添加过滤限制来实现对部分文件内容的替换

    法1.

      from(sourceSets.main.resources.srcDirs) {
           filesMatching('**/*.properties') {
            filter(ReplaceTokens, tokens: config, beginToken : '${', endToken : '}')
           }
        }
    

    法2.

      from(sourceSets.main.resources.srcDirs) {
            include '**/*.properties'       
            filter(ReplaceTokens, tokens: config, beginToken : '${', endToken : '}')
        }
    

    完整代码在此:
    https://github.com/GradleCN/GradleSide/tree/master/12-env/02-configfile

    相关文章

      网友评论

        本文标题:[Gradle中文教程系列]-跟我学Gradle-7.4:打包

        本文链接:https://www.haomeiwen.com/subject/dcyfrxtx.html