settings.gradle.kts里进行配置读取可进行动态控制 include 再结合 plugin+includeBuild方式可实现远程依赖和本地module的动态切换
读取配置test.properties
-
创建一个test.properties
-
编写配置内容
EVN_TYPE = Debug APP_VERSION_NAME = 12 APP_VERSION_CODE = 1
-
settings.gradle.kts里实现如下代码
val config = groovy.util.ConfigSlurper().parse(File("${rootProject.projectDir.path}/test.properties").toURL()) config.entries.joinToString(separator = ";") { "${it.toString()}" }.let { println("config path:${rootProject.projectDir.path}") println("config:$it") } config.forEach {entry-> (entry.value as? Boolean)?.let { if (it){ (entry.key as? String)?.let { include(it.replace("__",":").also { println("config include-> $it") }) } } } }
解析json文件
-
创建配置文件test.json
[{ "name":"木木" }, { "name":"木夕" } ]
-
settings.gradle.kts里实现如下代码
val configPath = "${rootProject.projectDir.path}/moduleInfo.json" println("读取module配置:${configPath}") val configString = File(configPath).readText() val jsonArray = JsonSlurper().parseText(configString) as ArrayList<Map<String,Any>> jsonArray.forEach { element -> if(element["enableLocal"] == true){ include(element["localName"].toString().also { println("config include-> $it") }) } }
-
json解析会将对象转为map,取值时使用map的操作进行