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

时间:2013-08-30 11:59:31

标签: android gradle

是否可以在调用

之前重写执行任务
gradle build
像预编译一样的东西。有人请帮忙。是这样的东西,怎么样?

6 个答案:

答案 0 :(得分:60)

你可以这样做:

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

答案 1 :(得分:28)

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

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

答案 2 :(得分:11)

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

<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '123456789'); // Insert your pixel ID here.
fbq('track', 'PageView');
</script>
<noscript><img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id=123456789&ev=PageView&noscript=1"
/></noscript>
<!-- DO NOT MODIFY -->
<!-- End Facebook Pixel Code -->

答案 3 :(得分:0)

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

build.dependsOn publishToMavenLocal

答案 4 :(得分:0)

在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

答案 5 :(得分:0)

在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