gpt4 book ai didi

Gradle includeBuild vs 实现项目

转载 作者:行者123 更新时间:2023-12-03 05:05:12 27 4
gpt4 key购买 nike

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/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com