我已经模块化了我的共享代码,所以目前我有一个shared模块(kmp),在这个模块中我有shared:core和shared:database (都是多平台的)。
如果我在共享模块中设置了数据库,它就能工作:我将AppDatabase.sq放在commonMain文件夹中的shared中,在module /com/示例/kmmbase/ database /中正确生成模式。
另一方面,如果我试图将它移到shared:database模块,它不会生成模式,驱动程序也不会编译。我将AppDatabase.sq文件添加到相同的路径中,但现在添加到shared:database模块的commonMain中,并将sqldelight和gradle配置从shared gradle文件移动到shared:database gradle文件。
我所拥有的gradle配置如下:
sqldelight {
database("AppDatabase") {
packageName = "com.example.kmmbase.database"
sourceFolders = listOf("sqldelight")
}
}对于.sq文件,我尝试了不同的位置,并且在每个位置上我都匹配gradle配置的packageName:
知道我可能做错了什么吗?
编辑:下面是带有代码的回购。
发布于 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模块中,则必须检查以下部分:
sqldelight插件包含在/shared/database/build.gradle.kts中。sqldelight是用/shared/database/build.gradle.kts配置的sqldelight的配置中,有一个选项可以覆盖默认的源文件夹,即带有sourceFolders属性的sqldelight。默认情况下,对于上面的配置,它是/shared/database/src/commonMain/sqldelightcom.example一样,您将拥有目录/shared/database/src/commonMain/sqldelight/com/example/MySQLFile.sq (但对此步骤不太确定)https://stackoverflow.com/questions/67065918
复制相似问题