[Gradle中文教程系列]-跟我学Gradle-7.3:打包-为Web工程打不同环境包

通过一种奇葩的快捷方式给web工程打不同环境包

通常而言,开发环境和生产环境参数有着较大的差异,在上古时代,猿们通过打包时或者开发时手工修改配置文件的方式来区分生产环境和开发环境。显然这种方式是比较低效且lowbee的。那么,我们可以将不同环境的配置文件各建一份,通过Gradle来进行不同环境的打包。比如如下几种方式

  • 根据不同环境的参数建立不同的环境文件,打包时只打包相应的环境文件
  • 把环境参数配置到x.properties文件中,打包时从文件中读取相应参数动态修改配置文件

下面的姿势是选取的第一种,在src/main/resources按不同环境建立相应的folder,打包时将不需要环境文件排除掉。当然我这里只是一个示例,实际情况可以自行修改代码实现,比如如果不想保留环境目录直接把环境文件打包到src/main/resources,则直接把环境目录追加到srcDir下即可

执行下面的命令打相关环境的包

gradle -q -Penv=pro

可以修改gradle.properties中的env默认值

gradle.properties

env=dev

这种方式是直接将环境包目录下的文件打包到resources根目录下的方式
build.gradle

apply plugin: 'java'


sourceSets {    
    main {
        resources {
            srcDir "src/main/resources/${env}"
            
            sourceSets.main.resources.srcDirs.each   {      
                it.listFiles().each {
                     if(it.isDirectory()) {        
                        exclude "${it.name}"
                    }
                }                   
            }
        }
    }
}

------------------ ------------------ wei suo fen ge xian ------------------ ------------------

下面这种是保留环境包目录的方式
build.gradle

apply plugin: 'java'

sourceSets {    
    main {
        resources {
            sourceSets.main.resources.srcDirs.each   {      
                it.listFiles().each {
                     if(it.isDirectory() && it.name != "${env}") {
                        println "exclude ${it.name}"       
                        exclude "${it.name}"
                    }
                }                   
            }
        }
    }
}

下一篇:利用ConfigSlurper进行不同环境构建

推荐阅读更多精彩内容