Gradle 是否可以在调用之前执行任务
gradle build
类似的东西precompile
。有人请帮忙。这样的事情可能吗?如何?
Gradle 是否可以在调用之前执行任务
gradle build
类似的东西precompile
。有人请帮忙。这样的事情可能吗?如何?
你可以这样做:
task build << {
println 'build'
}
task preBuild << {
println 'do it before build'
}
build.dependsOn preBuild
由于该任务preBuild
将在build
任务之前自动调用。
如果你想preBuild
在配置阶段运行(前面的例子preBuild
在execution
阶段运行)你可以这样做:
task build << {
println 'build'
}
build.doFirst {
println 'do it before build'
}
更多关于 gradle 构建生命周期的信息可以在这里阅读http://www.gradle.org/docs/current/userguide/build_lifecycle.html。
对于那些想知道如何在 Android 项目中执行此操作的人,这对我有用:
task myTask << {
println "here's a task"
}
preBuild.dependsOn myTask
还有另一种方法可以做到这一点
task myTask << {
println "here's a task"
}
tasks.whenTaskAdded { task ->
if (task.name == 'assembleDebug') {
task.dependsOn myTask
}
<<
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
在 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
如果要运行的任务已经定义(例如publishToMavenLocal
),您可以将其添加到您的gradle build
任务中:
build.dependsOn publishToMavenLocal
这是 Kotlin DSL (build.gradle.kts) 等效于k_o_的答案:
tasks.create("MyTask") {
doLast {
println("I am the task MyTask")
}
}
tasks.build {
dependsOn("MyTask")
}
// OR another notation
// tasks.named("build") {
// dependsOn(tasks["MyTask"])
// }
有关更多信息,请参阅Gradle 文档:向任务添加依赖项。