Gradle嵌套项目配置

Gradle nested project configuration

我对为嵌套项目设置构建脚本有些困惑

我在这里写了一个简单的测试 repo https://github.com/814k31/TestGradle

本质上,我正在为一个模块编写一个包装器,并且需要将该包装器包含在一个更大的项目中,但是当它在一个更大的项目中使用时,我无法将模块导入到包装器中

依赖链

app imports OneDeep OneDeep imports TwoDeep

目录结构:

app oneDeep twoDeep build.gradle build.gradle build.gradle settings.gradle

测试仓库中的 master 分支是按照我期望的方式编写的

还有另一个分支,我调整了 settings.gradle 来工作,虽然我觉得我不应该那样做...

关于如何让 oneDeep(包装器)导入 twoDeep(模块)有什么建议吗?

提前致谢。

你没有描述你得到的错误,但是如果我们从你的 repo 中的 master 分支执行你的示例,我们会得到以下错误:

> Project with path ':twoDeep' could not be found in project ':oneDeep'.

这个问题来自于您从项目 'oneDeep' 脚本中引用项目 'twoDeep' 的方式:

dependencies {
    compile project(':twoDeep')  // <== this won't work: there is no project with absolute path ":twoDeep"

    // compile project('twoDeep')         //  <== use relative path to reference sub-project 'twoDeep' from project 'oneDeep'
    // compile project(':oneDeep:twoDeep') // <=  using absolute path will work as well
   }

因此,在从项目 'oneDeep' 引用子项目 'twoDeep' 时,您必须使用相对路径 (=> 'twoDeep' ) 或绝对路径 (=> ':oneDeep:twoDeep')。

来自Project DSL documentation

Project project(String path) : Locates a project by path. If the path is relative, it is interpreted relative to this project.

另见 Project and task paths(但没有明确说明 "relative" 路径的预期语法是什么)