需求
因为我们的工程,打包给开发环境和生产环境的依赖是不一样的,一个是快照,一个是release
思考
第一个想法是定义不同的task
,指定不同的变量,然后编译的时候依赖之
而且想默认的情况下选择dev
配置,但是试了好久无果,最后选择了下面的解决办法
如果哪位大佬知道如何更优雅的解决这个问题,还请在评论里告知一下
solution
首先在build.gradle
里定义两个Execution
阶段的task
,确保他们不会自动运行
(如果没有<<
,那么这些任务就是属于Configuration
阶段的,会自动运行的)
task selectProdVersion << {
println "select version for prod"
project.ext {
ms_common_version = "com.fanggeek.ms:common:1.0"
}
}
task selectDevVersion << {
println "select version for dev"
project.ext {
ms_common_version = "com.fanggeek.ms:common:1.0-SNAPSHOT"
}
}
然后再定义一个Configuration
阶段的task
通过判断命令行是否输入参数envType
来决定执行哪个task
,从而来设置不同的依赖
task setVersion() {
if(project.hasProperty('envType')) {
selectProdVersion.execute()
} else {
selectDevVersion.execute()
}
}
编译打包的时候,
如果是开发环境
gradle build
如果是生产环境
gradle build -PenvType
网友评论