Gradle - 使现有 android 项目成为其他项目的子项目并且 运行 "gradlew tasks"

Gradle - Make existing android project a child of other project and run "gradlew tasks"

第 1 部分

我有一个现有的 Android 项目,它是用 gradle 构建的。

settings.gradle 看起来像这样:

include ':android', ':androidTest', ':androidTestApp'

build.gradle 看起来像这样:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'
    }
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.4'
}

task customClean(dependsOn: [':android:clean', ':androidTest:clean', ':androidTestApp:clean']) {

}

allprojects {
    repositories {
        mavenCentral()
        mavenLocal()
    }
}

我需要做的是创建一个项目,它是这个 android 项目的父项目和 运行 这个 android 项目任务。我只添加到新根项目的 settings.gradle include 'android-sdk:android',这就是我现在所需要的。一切正常,我可以像这样 运行 android 项目的任务 gradlew androidBuild:

task androidBuild(dependsOn: 'android-sdk:android:assemble') << {
    group unitySdkGroupName
}

当我在新的根项目上 运行 gradlew tasks 时出现问题。我得到

Caused by: org.gradle.api.UnknownTaskException: Task with path ':android:clean' not found in project ':android-sdk'.

我知道我可以通过像这样删除冒号来解决这个问题,但如果可能的话,我想以某种方式使任务命令在不更改 android 项目的情况下工作。

    task customClean(dependsOn: ['android:clean', 'androidTest:clean', 'androidTestApp:clean']) {

}

第 2 部分

当我将其他嵌套项目添加到根项目的settings.gradle

include 'android-sdk:androidTest'
include 'android-sdk:androidTestApp'

我在依赖于 android 模块(这是 androidTest 模块)的子项目的依赖项部分出现错误:

dependencies {
    compile project(path: ":android")
    compile 'com.google.android.gms:play-services:7.3.0'
}

并在我刷新项目时得到这个(似乎又是相对路径问题):

Error:(30, 0) Project with path ':android' could not be found in project ':android-sdk:androidTest'.

所以问题是 - 我能否在不修改基础android项目的情况下使gradlew tasks命令正常工作以及如何最优雅地完成方式?

很遗憾:没有。嵌套的多项目构建是不可能的。我应该添加 yet,但尽管已经表明支持它们的意图,但绝对没有迹象表明何时可以使用此功能。

https://discuss.gradle.org/t/nested-multimodule-builds-with-a-flat-directory-layout/7509/13

我什至在 https://discuss.gradle.org/c/bugs

找不到功能请求