Gradle kotlin如何调用parent中定义的函数?
Gradle kotlin how to call function defined in parent?
在使用 gradle 多模块项目时,是否可以在父项目中定义函数但在子模块中使用它们 build.gradle.kts?
请注意,我不需要使用字符串注册和调用的非类型化任务...我希望将实际的类型安全代码共享给子模块。
最好不要创建插件或使用 buildSrc。
从父 build.gradle.kts 到所有子模块共享 class 最重要的方法是什么?
注意:这与通过 ext 共享闭包不同...你松散了类型安全,我要求的是子模块端的类型安全。
我认为没有办法。当一个 Kotlin 构建脚本被编译时,它将在扩展 CompiledKotlinBuildScript
的默认包(即空包)中作为一个名为 Build_gradle
的 class 结束。在脚本中定义的任何 class 都会成为 public 嵌套在其对应的 Build_gradle
中的 class。编译子项目构建脚本时,它无法访问包含父项目构建脚本的 class 路径。这是有道理的,因为在同一个(默认)包中会有多个 Build_gradle
文件。
我会选择 buildSrc
来解决问题,但我推测您还想要的是在多模块项目中某种很好的关注点分离,而不是让不相关的项目知道其他人需要沟通的内容。您可以做的是尽量减少曝光,只保留 API(接口,数据 classes)在 buildSrc
中,并在父项目中有一个 script plugin 提供实现.
在使用 gradle 多模块项目时,是否可以在父项目中定义函数但在子模块中使用它们 build.gradle.kts?
请注意,我不需要使用字符串注册和调用的非类型化任务...我希望将实际的类型安全代码共享给子模块。
最好不要创建插件或使用 buildSrc。
从父 build.gradle.kts 到所有子模块共享 class 最重要的方法是什么?
注意:这与通过 ext 共享闭包不同...你松散了类型安全,我要求的是子模块端的类型安全。
我认为没有办法。当一个 Kotlin 构建脚本被编译时,它将在扩展 CompiledKotlinBuildScript
的默认包(即空包)中作为一个名为 Build_gradle
的 class 结束。在脚本中定义的任何 class 都会成为 public 嵌套在其对应的 Build_gradle
中的 class。编译子项目构建脚本时,它无法访问包含父项目构建脚本的 class 路径。这是有道理的,因为在同一个(默认)包中会有多个 Build_gradle
文件。
我会选择 buildSrc
来解决问题,但我推测您还想要的是在多模块项目中某种很好的关注点分离,而不是让不相关的项目知道其他人需要沟通的内容。您可以做的是尽量减少曝光,只保留 API(接口,数据 classes)在 buildSrc
中,并在父项目中有一个 script plugin 提供实现.