gradle - Gradle kotlin如何调用父级中定义的函数?
问题描述
使用 gradle 多模块项目时,是否可以在父项目中定义函数但在子模块 build.gradle.kts 中使用它们?
请注意,我不需要使用字符串注册和调用的无类型任务...我希望将实际的类型安全代码共享给子模块。
理想情况下,无需创建插件或使用 buildSrc。
从父母 build.gradle.kts 到所有子模块共享一个类的最重要的方法是什么?
注意:这与通过外部共享封闭槽不同......你失去了类型安全,我要求的是子模块方面的类型安全。
解决方案
我在想没有办法。当 Kotlin 构建脚本被编译时,它将最终成为一个Build_gradle
在默认包(即空包)中调用的类,该类扩展了CompiledKotlinBuildScript
. 在脚本中定义的任何类在其对应的Build_gradle
. 当子项目构建脚本被编译时,它无法访问包含父项目构建脚本的类路径。Build_gradle
这是有道理的,因为在同一个(默认)包中会有多个文件。
我会去buildSrc
解决这个问题,但我推测你还想要的是在多模块项目中某种很好的关注点分离,而不是让不相关的项目知道其他人需要沟通什么。您可以做的以尽量减少暴露是只保留 API(接口、数据类)buildSrc
并在父项目中使用脚本插件提供实现。
推荐阅读
- php - 如何使用 MySql 查询返回数组值(来自 PHP)
- c# - 在异步循环中等待上一项
- intellij-idea - 如何关闭 SQL 文件中的数据库导航器建议
- installation - 后期 kubernetes 安装支持
- javascript - 量角器将javascript导入打字稿测试
- javascript - 在 React v15.5.4 中将自定义属性设置为 DOM 元素
- amazon-web-services - 无法删除 Amazon S3 存储桶
- neural-network - PyTorch Net.train() 无法建立连接 - 为什么?
- javascript - 重新排列 Flatlist 项目而不重新加载 React Native
- r - quantstrat 封装股票函数:错误:C 堆栈使用量太接近限制