第 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/