Gradle构建系统中的includeBuild(...)
和implementation(project(...))
之间的主要区别是什么?阅读文档后,我无法真正看到用例差异:
- https://docs.gradle.org/current/userguide/declaring_dependencies.html#sub:project_dependencies
- https://docs.gradle.org/current/userguide/composite_builds.html#separate_composite
我想做的是:两个独立项目共享相同的代码库:数据类(kotlix.serialization),外部数据库dao,接口。它不是一个完整的库,只是一些代码片段。
如何在Intellij中连接这两个项目以使类型提示工作?
2条答案
按热度按时间gcmastyq1#
Composite Build(使用
includeBuild
)是一种在自治Gradle项目之间创建依赖关系的方法。项目导入是一种在同一Gradle项目中的两个模块之间创建依赖关系的方法。
Composite Build的功能要强大得多,它也是一种在多个项目之间分解Gradle配置的新方法,而传统上是通过
buildSrc
技术来完成的。我发现这篇“构建大型项目”文章比"Composite Builds"文档更容易阅读。Gradle sample_structuring_software_projects中提供了一个演示复合构建强大功能的优秀示例项目。
项目依赖案例
树看起来像这样:
您在
module1/build.gradle.kts
中声明了一个依赖项,如下所示:只有当两个项目都声明为公共根项目的子模块时,才会解决依赖关系。
这意味着你有一个根
settings.gradle.kts
,如下所示:复合构建用例
项目不需要有共同的“伞”根项目,每个项目都是一个完全独立的项目。
一个项目可以简单地声明对另一个项目的依赖关系(甚至目标项目都不知道)。
树:
在
project1/settings.gradle.kts
中:在
project2/settings.gradle.kts
中:在
project1/build.gradle.kts
中如下所示:jm81lzqq2#
我也有同样的问题。阅读第一个链接,下一帕拉说:
模块依赖项的本地分支
如果模块本身是使用Gradle构建的,则模块依赖关系可以替换为对该模块源代码的本地分支的依赖关系。这可以通过使用复合构建来实现。例如,这允许您通过使用和构建来修复您在应用程序中使用的库中的问题。本地补丁版本而不是发布的二进制版本。2这一点的细节在复合构建章节中有描述。
所以,我认为这应该是一个实施项目。
代码完成在我的一个子项目上工作,但在另一个上没有。我仍在努力弄清楚