Gradle嵌套项目配置

时间:2018-09-18 02:22:29

标签: java gradle nested build.gradle project

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

我在这里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(模块)的任何建议?

谢谢。

1 个答案:

答案 0 :(得分:1)

您没有描述所得到的错误,但是如果我们从您的仓库中的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 and task paths(但其中“相对”路径的预期语法没有明确说明)