Android Studio - 在SYNC之后执行的gradle任务

时间:2015-01-07 09:54:39

标签: android gradle android-studio

项目与Gradle文件同步完成后,有没有办法执行一次gradle任务?

我尝试将任务依赖设置为preBuild,因为我看到在执行Sync时会触发gradle:build。但问题是依赖似乎不起作用,任务没有执行,我必须在每次同步后手动启动任务。

这基本上是我到目前为止所尝试的

apply plugin: 'com.android.library'
...

task myTask {
    ...
}
gradle.projectsEvaluated {
    preBuild.dependsOn(myTask)
}

我还尝试将任务依赖设置为我看到的其他任务被触发(:generate {Something}),但这也没有成功。

我可以做些什么来强制每次同步后执行gradle任务? 我正在使用Gradle 2.2.1 + Android Studio 1.0.2

4 个答案:

答案 0 :(得分:11)

最后,我设法在每个Sync事件上触发任务。 显然gradle.projectsEvaluated在同步时根本没有执行,或者在build任务之后执行,因此解决方案是完全摆脱它

apply plugin: 'com.android.library'
...

task myTask {
    ...
}

preBuild.dependsOn(myTask)

答案 1 :(得分:6)

在Gradle菜单中(通常位于Android Studio的右上角),有一个任务列表。通过右键单击任务,可以设置Execute After Sync

enter image description here

答案 2 :(得分:2)

前一段时间,JetBrains extended their idea gradle plugin现在可以写类似的东西

idea.project.settings {
  taskTriggers {
    afterSync tasks.getByName("myTask")
  }
}

您必须应用插件,例如

plugins {
  id "org.jetbrains.gradle.plugin.idea-ext" version "0.7"
}

答案 3 :(得分:0)

根据docs

  

Gradle构建具有三个不同的阶段

     

正在初始化...

     

配置:在此阶段中,将配置项目对象。   属于构建的所有项目的构建脚本是   执行

     

执行...

我们的 build.gradle 文件在配置阶段被执行。 Task是一类​​(开发org.gradle.api.DefaultTask时会扩展它们)。因此,我们仅调用任务的execute方法:

task myStandaloneTask(type: MyStandaloneTaskImpl){
    println("myStandaloneTask works!")
}

// let's call our task
myStandaloneTask.execute()

task myInsideGradleTask {
    println("myInsideGradleTask works!")
}

// let's call our task
myInsideGradleTask

其中MyStandaloneTaskImpl是在 buildSrc 或作为独立项目details

开发的任务

P.S。由于 Groovy

myInsideGradleTask之后无需使用括号()