在构建期间在 gradle 的 buildSrc/ 中序列化 kotlin 数据 class

Serialize kotlin data class in gradle's buildSrc/ during build

我希望在我的 kotlin gradle 应用程序的构建周期中生成 json 文件。我的目的是能够实例化数据 classes 与 public 和私有应用程序配置值的组合,这些配置值被放入构建的资源目录中。

我正在查看 kotlinx.serialization,我想在项目的 buildSrc/.

中理想地定义这些 classes

我没有在网上找到任何资源来尝试在 gradle 的构建过程中设置序列化,而不仅仅是在运行时为应用程序配置它。这就是我放在一起的 buildSrc/build.gradle.kts

plugins {
    `kotlin-dsl`
    kotlin("plugin.serialization") version "1.3.72"
}

repositories {
    jcenter()
}

dependencies {
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.1.0")
}

这是我的测试数据class:

@Serializable
data class JsonGenerator(val x: String = "")

我得到的错误是:

Cannot access 'Serializable': it is internal in 'kotlin.io'

似乎在未正确声明依赖项时会发生此错误。但我仍然不清楚 buildSrc 是否有限制使这成为不可能。我不喜欢这种方法,但这似乎是最好的解决方案。

编辑:

我已将 buildSrc/build.gradle.kts 更改为:

plugins {
    `kotlin-dsl`
}

repositories {
    jcenter()
}

dependencies {
    implementation(kotlin("serialization"))
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.0.1")
}

结构:

buildSrc
  main
   Kotlin
    MyTempClass.kt
  

kt 文件不要嵌套很重要,我认为只有当文件与嵌套目录同名时才有效

我的数据内部 class 文件:

import kotlinx.serialization.*

@Serializable
data class MyTempClass(val name: String)

我有一个序列化的具体实现,没有插件。

然后在顶层 build.gradle.kts,可以访问 MyTempClass