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的操作进行