Gradle 子项目不会编译依赖于其他子项目

hit*_*ted 6 gradle gradle-eclipse

我有一个具有以下结构的多项目 gradle 项目。

Project A: The top level project that all sub projects reside in.
  SubProject B: 
  SubProject C:
  SubProject D:
  SubProject E:
  SubProject Shared: Every 'SubProject' has a dependency to this project "compile project(':Shared')"
Run Code Online (Sandbox Code Playgroud)

从顶级“项目 A”运行 Gradle 任务时,一切正常

但是,当我尝试在子项目(例如“SubProject C”)上运行单个任务时,出现以下错误。

FAILURE:构建失败,出现异常

什么地方出了错:

评估根项目“SubProject C”时出现问题。

在根项目“SubProject C”中找不到路径为“:Shared”的项目。

我想我在这里看到了问题,Gradle 认为我的子项目是根项目?但是我不知道如何解决这个问题。

我的顶级 settings.gradle 文件看起来像这样

rootProject.name = 'Project A'

include 'SubProject B'
include 'SubProject C'
include 'SubProject D'
include 'SubProject E'
include 'SubProject Shared'
Run Code Online (Sandbox Code Playgroud)

这是我的“SubProject C”的 build.gradle 文件

dependencies {
    compile project(':Shared')
}
Run Code Online (Sandbox Code Playgroud)

额外的问题... 子项目是否需要将“rootProject.name”设置为子项目名称的 settings.gradle 文件?

Jak*_*olý 5

就我而言,问题是我的子项目settings.gradle

rootProject.name = 'MySubProject'
Run Code Online (Sandbox Code Playgroud)

删除文件修复了它。(看来你根本就没有该文件,仅仅删除该属性是不够的。)


Jin*_*tin 2

我认为问题出在您的 settings.gradle 文件上。

将您的 settings.gradle 文件替换为以下代码。

rootProject.name = 'Project A'

include 'SubProject B',':SubProject C',':SubProject D',':SubProject E'
include ':SubProject Shared'
Run Code Online (Sandbox Code Playgroud)

尝试运行“SubProjectC”的构建脚本。希望它能起作用。

并回答你的第二个问题。

We don't need seperate settings.gradle for each subprojects.
Run Code Online (Sandbox Code Playgroud)