【发布时间】:2018-12-19 19:29:18
【问题描述】:
我有一个使用 kotlin DSL 编写的多平台 (kotlin) 多项目 gradle 项目。忍受我。在 settings.gradle.kts 中,我有两种主要类型的包含帮助器来处理替代项目布局,一个常规模块(module/src)和一个多平台模块(module/js、module/common、module/jvm)。然后,我创建变量来保存我与这些助手一起使用的每个变量的列表,以按照我想要的方式包含所有内容。
我希望能够在我的 build.gradle.kts 文件中重用设置(列表)中定义的这些信息。
每次我尝试按照在构建文件中的方式执行此操作时,都会收到相同的错误:
val test: List<String> by rootProject.extra(listOf("game", "spine"))
或
val test: List<String> by extra(listOf("game", "spine"))
我得到的错误是:
Line 68: val test: List<String> by rootProject.extra(listOf("game", "spine"))
^ Expression 'extra' cannot be invoked as a function. The function 'invoke()' is not found
我的猜测是设置不支持扩展,因此即使 this 在设置中属于 Project 类型(bc 它是根项目),也没关系,您不能使用额外的。我能想到的唯一方法是在 gradle 属性文件中定义项目属性,但我不太热衷于此,因为这似乎不是要保留在那里的信息类型。
有什么东西可以在 buildscript 进行时延迟初始化扩展属性?
【问题讨论】:
-
看起来 settings.gradle.kts 和 build.gradle.kts 唯一真正共享的是 gradle 实例属性,但寻找如何设置这些似乎是一种设置它们的方法被删除?我可能已经找到了一种设置单个属性的方法,所以稍后我会在回过头来重构这部分时对此进行调查。
标签: gradle build kotlin settings gradle-kotlin-dsl