【问题标题】:Gradle add nested subproject from a multi-module project as dependency of another subprojectGradle 从多模块项目中添加嵌套子项目作为另一个子项目的依赖项
【发布时间】:2017-04-16 00:39:33
【问题描述】:

我有一个复杂但有趣的情况。这是我的文件夹结构的树形图:

root
|___ settings.gradle
|___ p1
|___ p2  // depends on p3/sp1
|___ p3
|____|___sp1
|____|___sp2

我希望这能解释这种情况。

现在我将如何添加 sp1 作为 p2 的依赖项?

到目前为止,在我的根 setting.gradle 中,我有

rootProject.name = root
include 'p1'
include 'p2'
include 'p3'

p2build.gradle,我有:

dependencies {
    compile project (':p3:sp1')
}

但是这样做仍然不能解决p2 中的依赖关系;我仍然收到有关缺少定义的错误。

我该如何解决这个问题?

顺便说一句,我将如何解决 sp1 可能具有的其他依赖项。就像它依赖于sp2 一样,即使它已经在p3 中解决,我是否需要以某种方式声明它?

【问题讨论】:

  • 嗨!你解决了这个问题吗?例如,我正在寻找解决类似问题的方法
  • @iamthevoid 我认为接受的答案应该有效。你试过了吗?
  • 是的,我已经这样做了。
  • 顺便说一句,我有一个问题。默认情况下,我的子模块的模块使用父项目的 settings.gradle、build.gradle,但与子模型根项目的文件不同。有没有办法强制使用子模型根项目的 build.gradle 和设置 gradle?
  • @iamthevoid Gradle 不支持在一个 gradle 项目中包含多个 settings.gradle(无论子项目如何)。您可以使用 composite build 项目来完成此操作

标签: gradle dependency-management multiple-projects


【解决方案1】:

假设项目sp1sp2 是项目subprojectssubprojects,如果你想这样做:

dependencies {
    compile project(':p3:sp1')
}

那么你需要把你的settings.gradle改成:

rootProject.name = root

include ':p1'
include ':p2'
include ':p3'    // Keep this if this folder contains a build.gradle
include ':p3:sp1'
include ':p3:sp2'

【讨论】:

【解决方案2】:

只是为那些可能正在寻找的人添加答案,在您的 settings.gradle 中,您将拥有

include ':p1',':p2',':p3:sp1',':p3:sp2'

如果 sp1 依赖于 sp2

然后添加对sp1的gradle的依赖为

dependency {
   compile project(":p3:sp2")
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-21
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多