Gradle 有没有可能先执行一项任务
gradle build
像 precompile这样的东西。谁来帮帮忙。这样的事情可能吗? 怎么可能?
precompile
你可以这样做:
task build << { println 'build' } task preBuild << { println 'do it before build' } build.dependsOn preBuild
由于这个任务 preBuild会在 build任务之前自动调用。
preBuild
build
如果你想在配置阶段运行 preBuild(前面的例子在 execution阶段运行 preBuild) ,你可以这样做:
execution
task build << { println 'build' } build.doFirst { println 'do it before build' }
更多关于分级构建生命周期的信息可以在这里阅读 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 }
如果要运行的任务已经定义(例如 publishToMavenLocal) ,您可以使用以下方法将其添加到 gradle build任务中:
publishToMavenLocal
build.dependsOn publishToMavenLocal
在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
左移操作员 <<在五年级被移除。
<<
在我的案例中,我有一个使用 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
这是 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 文档: 向任务添加依赖项。