dsl 中的子项目 var 类型
Subprojects var type in dsl
我正在将我的代码转换为 Kotlin DSL,因为我有多模块应用程序,所以我有一些技巧可以将 gralde 任务(如清理、构建等)转换到其他模块。所以我在 gradle 中有以下方法:
private static def getSubProjectTasks(subprojects, taskName) {
def tasks = []
subprojects.each { Project project ->
if (project.subprojects.size() == 0) {
def relativeModulePath = project.path.replace(":feature:", "")
tasks.add("$relativeModulePath:$taskName")
}
}
return tasks
}
现在尝试过渡到 kotlin dsl 我是从这种方式开始的
fun getSubProjectTasks(subproject: Unit, taskName: String) {
for(project in subproject) {
if(project.subprojects.size() == 0) {
}
}
}
我不太确定在 Kotlin DSL 中 subproject
是什么类型?这只是一个集合还是单元或如何转换此方法。
您是否尝试过 Iterable<Project>
、List<Project>
或 Array<Project>
?
我是根据你的 groovy lambda each
.
判断的
您还可以将 for
更改为 map
并让一行完成所有操作:
fun getSubprojectTasks(subprojects: List<Subproject>, taskName: String) = subproject.mapNotNull { project ->
if(project.subprojects.size == 0) {
null
} else {
"${project.path.replace(":feature:", "")}$taskName"
}
}
我正在将我的代码转换为 Kotlin DSL,因为我有多模块应用程序,所以我有一些技巧可以将 gralde 任务(如清理、构建等)转换到其他模块。所以我在 gradle 中有以下方法:
private static def getSubProjectTasks(subprojects, taskName) {
def tasks = []
subprojects.each { Project project ->
if (project.subprojects.size() == 0) {
def relativeModulePath = project.path.replace(":feature:", "")
tasks.add("$relativeModulePath:$taskName")
}
}
return tasks
}
现在尝试过渡到 kotlin dsl 我是从这种方式开始的
fun getSubProjectTasks(subproject: Unit, taskName: String) {
for(project in subproject) {
if(project.subprojects.size() == 0) {
}
}
}
我不太确定在 Kotlin DSL 中 subproject
是什么类型?这只是一个集合还是单元或如何转换此方法。
您是否尝试过 Iterable<Project>
、List<Project>
或 Array<Project>
?
我是根据你的 groovy lambda each
.
您还可以将 for
更改为 map
并让一行完成所有操作:
fun getSubprojectTasks(subprojects: List<Subproject>, taskName: String) = subproject.mapNotNull { project ->
if(project.subprojects.size == 0) {
null
} else {
"${project.path.replace(":feature:", "")}$taskName"
}
}