首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果模式位于单独的模块中,则SQLDelight多平台不生成模式

如果模式位于单独的模块中,则SQLDelight多平台不生成模式
EN

Stack Overflow用户
提问于 2021-04-12 21:28:29
回答 1查看 700关注 0票数 0

我已经模块化了我的共享代码,所以目前我有一个shared模块(kmp),在这个模块中我有shared:coreshared:database (都是多平台的)。

如果我在共享模块中设置了数据库,它就能工作:我将AppDatabase.sq放在commonMain文件夹中的shared中,在module /com/示例/kmmbase/ database /中正确生成模式。

另一方面,如果我试图将它移到shared:database模块,它不会生成模式,驱动程序也不会编译。我将AppDatabase.sq文件添加到相同的路径中,但现在添加到shared:database模块的commonMain中,并将sqldelight和gradle配置从shared gradle文件移动到shared:database gradle文件。

我所拥有的gradle配置如下:

代码语言:javascript
复制
sqldelight {
    database("AppDatabase") {
        packageName = "com.example.kmmbase.database"
        sourceFolders = listOf("sqldelight")
    }
}

对于.sq文件,我尝试了不同的位置,并且在每个位置上我都匹配gradle配置的packageName:

  • shared/com/样例/kmmbase/shared/
  • sqldelight/com/example/kmmbase/database/
  • example/com/示例/数据库/
  • example/com/示例/数据库/数据库/
  • sqldelight/数据库/
  • ..。

知道我可能做错了什么吗?

编辑:下面是带有代码的回购

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-20 23:53:37

tldr;

根据当前的存储库结构,sqldelight目录位于src/commonMain/kotlin中。但是,在您的情况下,它应该与kotlin处于相同的级别,/shared/database/src/commonMain/sqldelight

全答

每个gradle模块都有自己的build.gradle.kts文件。加载插件com.squareup.sqldelight的插件也会查看相应的源文件。尽管如此,如果您希望.sq文件位于您的:shared:database模块中,则必须检查以下部分:

  1. sqldelight插件包含在/shared/database/build.gradle.kts中。
  2. sqldelight是用/shared/database/build.gradle.kts配置的
  3. sqldelight的配置中,有一个选项可以覆盖默认的源文件夹,即带有sourceFolders属性的sqldelight。默认情况下,对于上面的配置,它是/shared/database/src/commonMain/sqldelight
  4. 在配置的源文件夹中,您必须使用在配置中定义的包结构(与packageName com.example一样,您将拥有目录/shared/database/src/commonMain/sqldelight/com/example/MySQLFile.sq (但对此步骤不太确定)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67065918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档