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

标签 gradle android-gradle-plugin build.gradle

第 1 部分。

我有一个使用 gradle 构建的现有 Android 项目。
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'.

所以问题是 - 我可以做gradlew tasks命令在不修改底层 android 项目的情况下正常工作,如何以最优雅的方式完成?

最佳答案

很不幸的是,不行。嵌套的多项目构建是不可能的。我应该补充一下,但是尽管已经表明了支持它们的意图,但绝对没有迹象表明何时可以预期此功能。

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

我什至在 https://discuss.gradle.org/c/bugs 上都找不到功能请求

关于Gradle - 使现有的 android 项目成为其他项目的子项目并运行 "gradlew tasks",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31565198/

相关文章:

android - 与 Android 和桌面项目共享 Kotlin 模块

android - dexDebugTest失败,并带有DexException “Cannot merge new index”进行测试

android - 如何告诉 Gradle 不要在我的 .jar 依赖项中排除 .so 文件?

android - testCompile 导致 Android studio 无法解析依赖关系

android - react native - :expo-modules-core:compileDebugKotlin error

android - 有没有办法根据选定的 productFlavor 更改 gradle 变量值?

java - 项目中未认可的JRJC

gradle spring boot starter-logging 因 Logback 错误而失败

android - 运行错误 :Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'

android - Gradle 项目刷新失败 - 协议(protocol)系列不可用