Gradle includeBuild vs 实现项目

标签 gradle gradle-kotlin-dsl

includeBuild(...) 之间的主要区别是什么?和 implementation(project(...))在 Gradle 构建系统中?阅读文档后,我无法真正看到用例差异:

  • 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、接口(interface)。它不是一个完整的库,而只是一些代码片段。
    如何连接 Intellij 中的两个项目以便类型提示起作用?

    最佳答案

    复合构建 (通过使用 includeBuild )是一种在自治 Gradle 项目之间创建依赖关系的方法。
    项目导入 , 是一种在同一个 Gradle 项目中的两个模块之间创建依赖关系的方法。
    复合构建 功能更强大,也意味着成为您传统上使用 buildSrc 在多个项目之间分解 gradle 配置的新方法技术。
    我找到了 "Structuring Large Projects"文章比 "Composite Builds" 更容易阅读博士。
    可以在 Gradle sample_structuring_software_projects 中找到一个演示复合构建强大功能的优秀示例项目。 .
    项目依赖案例
    树看起来像这样:

    settings.gradle.kts
    module1/build.gradle.kts
    module2/build.gradle.kts
    
    您在 module1/build.gradle.kts 中声明了一个依赖项像这样 :
    dependencies{
       implementation(project("com.domain:module2))
    }
    
    仅当两个项目都被声明为公共(public)根项目的子模块时,才会解决依赖关系。
    这意味着你有一个根settings.gradle.kts像这样 :
    rootProject.name = "rootProject"
    include(":module1")
    include(":module2")
    
    复合构建案例
    这些项目不需要有共同的“伞”根项目。
    每个项目都是一个完全独立的项目。
    一个项目 cas 只是简单地声明了对另一个项目的依赖(甚至目标项目都不知道)。
    树 :
    project1/build.gradle.kts
    project1/settings.gradle.kts
    project2/build.gradle.kts
    project2/settings.gradle.kts
    
    project1/settings.gradle.kts :
    rootProject.name = "project1"
    includeBuild("project2") //No more ':' as it is not a module
    
    project2/settings.gradle.kts :
    rootProject.name = "project2"
    
    project1/build.gradle.kts像这样 :
    dependencies{
       implementation(project("com.domain:project2"))
    }
    

    关于Gradle includeBuild vs 实现项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60464719/

    相关文章:

    Gradle - 属性可以放在 settings.gradle.kts 中吗

    java - 使用库时出现 ClassNotFoundException 异常

    gradle - 如何使用 Gradle Kotlin-DSL 添加本地资源

    java - 未能设置 gradle : 'Could not find the main class: org.gradle.launcher.GradleMain.'

    gradle - 在Debian Linux上全新安装后Gradle无法正常工作

    gradle kotlin dsl - 如何为子项目配置依赖项

    gradle - 如何在 Kotlin DSL 中为多模块项目创建 "base"gradle 文件?

    eclipse - Eclipse无法解决新的Gradle依赖项

    java - 为什么今天开发Android需要与gradle同步?

    gradle - Kotlin Gradle 使用依赖项