目前,我有两个不同的基于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
以及“公共”模块?
1条答案
按热度按时间eqoofvh91#
我有一个类似的项目,我是这样做的。
要设置一个包含多个模块的Gradle项目,这些模块共享一个公共的Kotlin多平台模块,我遵循以下步骤:
1.在根级别创建一个新的Gradle项目。该项目将包含两个子模块和公共Kotlin多平台模块。
1.定义根级别的
settings.gradle.kts
文件,以包含子模块和公共模块:1.为根项目定义
build.gradle.kts
文件。这个文件应该应用java
和kotlin
插件,以及项目的任何其他常见配置。1.为
common
模块定义build.gradle.kts
文件。这个文件应该应用kotlin-multiplatform
插件,并定义backend
和frontend
模块都应该使用的任何共享代码。1.在每个
backend
和frontend
模块中,定义build.gradle.kts
文件以应用java
和kotlin
插件,并将common
模块作为依赖项包含在内:1.将所有应该共享的公共代码移到
common
模块中。这可以包括数据类、实用程序函数和其他共享代码。1.删除
backend
和frontend
模块中的任何重复代码,并将其替换为common
模块上的依赖项。至于不同的Gradle Package 器版本和
libs.versions.toml
文件,我可以为所有项目标准化一个版本,也可以为每个项目使用不同的版本。我选择使用不同的版本,我可以在各自的gradle-wrapper.properties
文件中为每个项目指定版本。类似地,我可以在每个项目各自的build.gradle.kts
文件中为每个项目定义不同的版本,或者使用在根级别build.gradle.kts
文件中定义的单个版本。