【问题标题】:Code generator as a gradle plugin or dependency代码生成器作为 gradle 插件或依赖项
【发布时间】:2022-01-13 18:44:52
【问题描述】:

我编写了一个代码生成器 https://github.com/vjuge/cdmdsl,它使用 gradle 的 buildSrc 从名为“CDM”的金融模型库 https://regnosys.jfrog.io/artifactory/libs-snapshot 生成一些 kotlin DSL 代码

它利用java的反射能力动态生成DSL(模型经常变化,新类型的引入,属性的改变/删除等)

它工作正常,因此我们可以包含此 DSL 以从任何基于 Java 的应用程序中轻松操作模型。

今天的缺点是我需要定期构建和部署我的 DSL 版本以遵循 CDM 版本。这有点烦人,而且不可持续。

我想知道是否有任何方法可以让我的项目能够“即时”构建,作为依赖项:

  1. 应用程序将实现两个依赖项:此 DSL + CDM 库
  2. 应用程序将设置所需的 CDM 依赖版本
  3. DSL 将像 gradle 插件一样使用,在应用程序构建时根据相应的 cdm 版本生成代码

希望我的描述足够清楚!

【问题讨论】:

    标签: java kotlin gradle dsl gradle-plugin


    【解决方案1】:

    检查 Kotlin 符号处理 (KSP),它是编写编译器插件或处理器的最新工具/API。有了它,您可以编写一个插件来解析 CDM 库并生成 DSL,使其立即可供客户端应用程序使用。这将在客户端项目构建阶段发生,基于 CDM 版本生成本地且唯一的 DSL。

    https://www.youtube.com/watch?v=bv-VyGM3HCY

    https://kotlinlang.org/docs/ksp-overview.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-17
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-21
      • 2012-08-31
      相关资源
      最近更新 更多