在android gradle构建之前执行任务?

Hel*_*ode 53 android gradle

是否可以在调用之前重写执行任务

gradle build
Run Code Online (Sandbox Code Playgroud)

类似预编译的东西.有人请帮忙.是这样的东西,如何?

pep*_*uch 65

你可以这样做:

task build << {
    println 'build'
}
task preBuild << {
    println 'do it before build'
}
build.dependsOn preBuild
Run Code Online (Sandbox Code Playgroud)

由于该任务preBuild将在build任务之前自动调用.

如果你想运行preBuild在配置阶段(前面的例子运行preBuildexecution相)你能做到这样:

task build << {
    println 'build'
}
build.doFirst {
    println 'do it before build'
}
Run Code Online (Sandbox Code Playgroud)

有关gradle构建生命周期的更多信息,请参阅http://www.gradle.org/docs/current/userguide/build_lifecycle.html.

  • 我可以在`gradlew assemble`任务之前说这个吗,如果是这样,如何? (2认同)

nla*_*son 29

对于那些想知道如何在Android项目中执行此操作的人来说,这对我有用:

task myTask << {
  println "here's a task"
}
preBuild.dependsOn myTask
Run Code Online (Sandbox Code Playgroud)

  • 是否可以在`assembleDebug`之前调用它? (5认同)

Vol*_*myr 11

还有一种方法可以做到这一点

task myTask << {
    println "here's a task"
}
tasks.whenTaskAdded { task ->
if (task.name == 'assembleDebug') {
    task.dependsOn myTask 
}
Run Code Online (Sandbox Code Playgroud)


Mah*_*zad 8

这是针对Kotlin DSL (build.gradle.kts )的:

tasks.register/* OR .create */("MyTask") {
    doLast {
        println("I am the task MyTask")
    }
}

tasks.build {
    dependsOn("MyTask")
}

// OR another notation
// tasks.named("build") {
//     dependsOn(tasks["MyTask"])
// }
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅Gradle 文档:向任务添加依赖项