Jan*_*elý 30 gradle gradle-kotlin-dsl
Gradle 构建系统之间includeBuild(...)的主要区别是什么?implementation(project(...))阅读文档后我无法真正看到用例差异:
我想做的事情:为两个独立的项目共享相同的代码库:数据类(kotlix.serialization)、外部数据库 dao、接口。它不是一个完整的库,而只是一些代码片段。
如何连接 Intellij 中的两个项目以便类型提示起作用?
Ren*_*aud 38
复合构建(通过使用includeBuild)是一种在自治 Gradle 项目之间创建依赖关系的方法。
项目导入是一种在同一 Gradle 项目中的两个模块之间创建依赖关系的方法。
复合构建的功能要强大得多,并且也是传统上使用该buildSrc技术在多个项目之间分解 gradle 配置的新方法。我发现这篇“构建大型项目”文章比“复合构建”文档更容易阅读。
可以在 Gradle Sample_structuring_software_projects中找到展示复合构建功能的优秀示例项目。
这棵树看起来像这样:
settings.gradle.kts
module1/build.gradle.kts
module2/build.gradle.kts
Run Code Online (Sandbox Code Playgroud)
并且您正在声明这样的依赖项module1/build.gradle.kts:
settings.gradle.kts
module1/build.gradle.kts
module2/build.gradle.kts
Run Code Online (Sandbox Code Playgroud)
仅当两个项目都声明为公共根项目的子模块时,依赖关系才会得到解决。
这意味着你有一个settings.gradle.kts像这样的根:
dependencies {
implementation(project("com.domain:module2"))
}
Run Code Online (Sandbox Code Playgroud)
这些项目不需要有共同的“伞”根项目。每个项目都是一个完全独立的项目。
一个项目可以简单地声明对另一个项目的依赖关系(甚至目标项目都不知道这一点)。
树:
project1/build.gradle.kts
project1/settings.gradle.kts
project2/build.gradle.kts
project2/settings.gradle.kts
Run Code Online (Sandbox Code Playgroud)
在project1/settings.gradle.kts:
rootProject.name = "rootProject"
include(":module1")
include(":module2")
Run Code Online (Sandbox Code Playgroud)
在project2/settings.gradle.kts:
project1/build.gradle.kts
project1/settings.gradle.kts
project2/build.gradle.kts
project2/settings.gradle.kts
Run Code Online (Sandbox Code Playgroud)
像project1/build.gradle.kts这样:
rootProject.name = "project1"
includeBuild("../project2") //No more ':' as it is not a module
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16065 次 |
| 最近记录: |