gradle 全栈Ktor + Android的项目设置

8tntrjer  于 2023-05-18  发布在  Android
关注(0)|答案(1)|浏览(345)

目前,我有两个不同的基于gradle的项目,方便地命名为“前端”和“后端”,如下所示:

*frontend- Android Compose应用程序,使用Ktor客户端与服务器通信
*后端- Ktor Web服务器

这两个人显然应该沟通。数据通过HTTP以JSON形式发送,但是,由于两者都是用Kotlion编写的并且都使用Ktor,因此它们都发送@Serializable data class对象。目前,我已经定义了两次数据类,每个项目定义一次,并且我必须记住,如果我更改一个,我也必须更改另一个。相反,我希望有一个大型的gradle项目,其中包含两个子模块,以及第三个“公共”KotlinMultiplatfom,其全部目的是共享应该复制的代码(例如数据类)。
问题是,这两个项目都有自己的“gradle”文件夹,每个都有一个不同版本的 Package 器。android模块在'gradle'目录中也有一个'libs.versions.toml'文件。
我应该如何设置“外部”build.gradle.kts以及“公共”模块?

eqoofvh9

eqoofvh91#

我有一个类似的项目,我是这样做的。
要设置一个包含多个模块的Gradle项目,这些模块共享一个公共的Kotlin多平台模块,我遵循以下步骤:
1.在根级别创建一个新的Gradle项目。该项目将包含两个子模块和公共Kotlin多平台模块。
1.定义根级别的settings.gradle.kts文件,以包含子模块和公共模块:

rootProject.name = "my-project"

include(":backend")
include(":frontend")
include(":common")

1.为根项目定义build.gradle.kts文件。这个文件应该应用javakotlin插件,以及项目的任何其他常见配置。
1.为common模块定义build.gradle.kts文件。这个文件应该应用kotlin-multiplatform插件,并定义backendfrontend模块都应该使用的任何共享代码。
1.在每个backendfrontend模块中,定义build.gradle.kts文件以应用javakotlin插件,并将common模块作为依赖项包含在内:

dependencies {
    implementation(project(":common"))
}

1.将所有应该共享的公共代码移到common模块中。这可以包括数据类、实用程序函数和其他共享代码。
1.删除backendfrontend模块中的任何重复代码,并将其替换为common模块上的依赖项。
至于不同的Gradle Package 器版本和libs.versions.toml文件,我可以为所有项目标准化一个版本,也可以为每个项目使用不同的版本。我选择使用不同的版本,我可以在各自的gradle-wrapper.properties文件中为每个项目指定版本。类似地,我可以在每个项目各自的build.gradle.kts文件中为每个项目定义不同的版本,或者使用在根级别build.gradle.kts文件中定义的单个版本。

相关问题