项目与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
答案 0 :(得分:11)
最后,我设法在每个Sync事件上触发任务。
显然gradle.projectsEvaluated
在同步时根本没有执行,或者在build
任务之后执行,因此解决方案是完全摆脱它
apply plugin: 'com.android.library'
...
task myTask {
...
}
preBuild.dependsOn(myTask)
答案 1 :(得分:6)
答案 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
之后无需使用括号()