如何在gradle项目中配置依赖项,使其同时作为子模块工作?

如何在gradle项目中配置依赖项,使其同时作为子模块工作?,gradle,git-submodules,Gradle,Git Submodules,我希望在我的项目中使用一个项目作为git子模块,理想情况下不改变上游项目(或者如果有意义的话,以一种合并的方式改变它) 问题是这个项目由两个模块组成,我想直接使用其中的两个模块,其中一个模块也依赖于另一个模块 myProject ├ submodule | ├ first | | ├ build.gradle: implementation project(":second") <---- this fails if I don't change it to :subm

我希望在我的项目中使用一个项目作为git子模块,理想情况下不改变上游项目(或者如果有意义的话,以一种合并的方式改变它)

问题是这个项目由两个模块组成,我想直接使用其中的两个模块,其中一个模块也依赖于另一个模块

myProject
├ submodule
| ├ first
| | ├ build.gradle: implementation project(":second") <---- this fails if I don't change it to :submodule:second
| ├ second
| ├ settings.gradle: include ':first', ':second'
├ app
| ├ build.gradle: implementation project(":submodule:first"), implementation project(":submodule:second")
| ├ settings.gradle: include ':submodule:first', ':submodule:second', ':app'
myProject
├ 子模块
| ├ 第一
| | ├ build.gradle:实现项目(“:second”)gradle项目路径(例如
”:子模块:second'

  • 实际上表示项目层次结构。这意味着在
    设置中使用
    include':submodule:second'
    。gradle
    将隐式创建一个名为
    submodule
    的项目,即使它与构建完全无关
  • 不需要匹配目录结构(这只是一种约定)。您可以独立于项目路径(和项目名称)设置项目目录
请从中查看以下示例:



但是,我建议不要使用
include
。而是使用
includeFild
并设置一个。复合构建在耦合方面不同于经典的多项目构建。由于您的Git子模块指示可以用作独立项目的构建(具有自己的
设置.gradle
),因此多项目构建的强耦合似乎不合适。多个
设置。gradle
文件在多项目生成中也可能会导致问题,但对于复合生成来说是可以的。

谢谢Lukas!我也将研究
includeFild
功能,但怀疑我更喜欢
include
给我的控件。子模块包含4个模块,其中我们只使用了2个,那么为什么要编译4个模块,如果我们只需要2个模块,为什么还要处理副作用呢?我不认为其他模块将使用复合构建进行编译。您仍然可以表示项目依赖关系,Gradle将只执行构建所需工件所需的任务。
// include two projects, 'foo' and 'foo:bar'
// directories are inferred by replacing ':' with '/'
include 'foo:bar'

// include one project whose project dir does not match the logical project path
include 'baz'
project(':baz').projectDir = file('foo/baz')