Gradle任务不在Android Studio中执行

use*_*805 5 android gradle android-studio build.gradle

我试图在Android Studio项目中为lib模块'lib1'执行gradle任务.它应该使用命令'gradlew assembleDebug'或'gradlew assemble'运行,但它永远不会运行.

task copy(type: Copy, dependsOn: ':lib1:assembleDebug') << {
  println "copying"
}
Run Code Online (Sandbox Code Playgroud)

我尝试了一个没有依赖的简单任务,它似乎也从未运行过.

task hello << {
  println 'hello world'
}
Run Code Online (Sandbox Code Playgroud)

这会运行,但它只在配置阶段.

task hello {
  println 'hello world'
}
Run Code Online (Sandbox Code Playgroud)

在库模块组装之后,我需要在执行阶段获得一个副本.有什么线索怎么办?

Mar*_*ira 7

您需要以某种方式将任务添加到任务依赖关系图.通常,通过使现有任务依赖于它.在这种情况下,copy取决于assembleDebug,这仅仅意味着,如果您运行copy任务,assembleDebug必须先运行.这并不意味着运行assembleDebug会导致copy运行.将其添加到您的构建中.

assemble.dependsOn copy
Run Code Online (Sandbox Code Playgroud)

现在运行gradlew assemble将导致copy任务执行.

您的第二个任务已正确定义,但同样,其他任务都不依赖于它,因此只有通过显式通过gradlew hello或通过添加上述依赖项运行它才会执行.

您的第三个任务在配置阶段打印一行,因为仅在该阶段评估该闭包.这是<<增加了一个运营商doLast,其在执行时运行的动作.