【发布时间】:2021-12-16 00:21:18
【问题描述】:
我正在尝试创建一个 gradle 插件,该插件将从可以在另一个项目中运行的 gradle 任务生成文件(从数据类序列化)。
假设我正在序列化的类标有一些注释@Annot,并且我在 gradle 任务中找到了所有具有反射的相关类(我确保依赖 kotlin compile 以便创建二进制文件)。问题是当我尝试使用时
val clazz: Class<*>
clazz.kotlin.serializer()
我得到一个 Serializer for class 'Type' is not found.(类型是我找到的实际类,并用 @Serializable 和 @Annot 注释。
我正在使用 gradle 版本 7.2,kotlin 1.5.21(也尝试使用 1.5.31)
使用该插件的项目启用了 kotlinx 序列化插件
我错过了什么?为什么我无法使用 gradle 任务访问类序列化程序?
注意*如果我在目标项目中运行上述代码(而不是在插件中,那么serializer() 函数不会引发异常
【问题讨论】:
-
有趣。我怀疑这与
kotlinx.serialization依赖编译器插件来生成序列化程序和serializer()功能这一事实有关。我猜在 Gradle 执行生命周期的这一点上,编译器插件还没有运行。 -
所以插件在编译运行后运行?我们知道是否有运行插件的 gradle 任务吗?只是想知道
标签: kotlin gradle-plugin kotlinx.serialization