在Android Gradle构建之前执行任务?

ohfgkhjo  于 12个月前  发布在  Android
关注(0)|答案(7)|浏览(136)

Gradle是否可以在调用

gradle build

字符串
类似precompile的东西。有人请帮帮忙。像这样的东西可能吗?

dzhpxtsq

dzhpxtsq1#

你可以这样做:

task build << {
    println 'build'
}
task preBuild << {
    println 'do it before build'
}
build.dependsOn preBuild

字符串
preBuild任务会在build任务之前被自动调用。
如果你想在配置阶段运行preBuild(前面的例子在execution阶段运行preBuild),你可以这样做:

task build << {
    println 'build'
}
build.doFirst {
    println 'do it before build'
}


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

lf5gs5x2

lf5gs5x22#

对于那些想知道如何在Android项目中做到这一点的人来说,这对我很有效:

task myTask << {
  println "here's a task"
}
preBuild.dependsOn myTask

字符串

1rhkuytd

1rhkuytd3#

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

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

字符串

rqdpfwrv

rqdpfwrv4#

这是针对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"])
// }

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

pdsfdshx

pdsfdshx5#

在Gradle 5中删除了左移位运算符<<
在我的例子中,我有一个使用Java子项目的Android项目,这是有效的:

task myTask {
    doLast {
        println 'do it before build'
    }
}

assemble.dependsOn myTask

字符串
关于最初的问题,这应该是现在的语法:

task myTask {
    doLast {
        println 'do it before build'
    }
}
build.dependsOn myTask
// or for Android
preBuild.dependsOn myTask

55ooxyrt

55ooxyrt6#

在Gradle 5.4.x

// File: app/build.gradle
// See: https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Exec.html
task ruby(type:Exec) {
    workingDir '../'
    executable = '/usr/bin/env'
    args = ["ruby", "--version"]
}
preBuild.dependsOn ruby

字符串

owfi6suc

owfi6suc7#

如果已经定义了要运行的任务(例如publishToMavenLocal),则可以使用以下命令将其添加到gradle build任务中:

build.dependsOn publishToMavenLocal

字符串

相关问题