如何在build.gradle中执行Ant目标任务?

时间:2015-04-07 14:51:41

标签: android ant gradle build.gradle

如何从build.gradle文件中获取与Ant目标关联的任务?

build.gradle中导入build.xm l文件的部分:

def targetSdk = android.defaultConfig.targetSdkVersion.getApiLevel()
ant.properties['android.version'] = "android-$targetSdk"
ant.properties['sdk-location'] = SDK_DIR
ant.importBuild(rootDir.absolutePath + "/bcproj/build.xml")

我想要执行的ant目标名为compile-android。它成功运行在命令行中:

./gradlew compile-android

但是我想在build.gradle中包含它,以便我可以指定哪个ant目标需要为每个buildType进行编译。在我的所有谷歌搜索中,我能找到的所有参考资料都是在命令行进行编译。

更新1

我尝试将compile-android任务添加为与构建过程一起执行的另一个任务的依赖项。虽然从概念上讲两者实际上是相互独立的。这仍然无法让compile-android执行。

task copyShopMetadata(type: Exec, dependsOn: 'compile-android') {
    workingDir rootDir
    commandLine './copy_shop_metadata.sh'
}

copyShopMetadata.execute()

我试图扭转依赖性,仍然无法正常工作。

Task t = tasks.findByName('compile-android')
t.dependsOn(copyShopMetadata)
copyShopMetadata.execute()

更新2

我应该注意,从命令行执行时,添加上面的依赖示例确实有效。然而,我的最终目标是能够使用gradle文件同步项目"在Android Studio中并且compile-android ant目标编译。也许这是不可能的?

2 个答案:

答案 0 :(得分:0)

假设您的任务不是要独立于所有其他处理,那么您将希望您的任务依赖于其他任务,这意味着当您尝试运行其他任务时,您的任务将是先执行。例如,该任务可能是“构建”,因此您可能会执行以下操作:

project.build.dependsOn("compile-android")

(我不确定这个的确切语法。)

答案 1 :(得分:0)

好的,看起来这个问题让我误解了“ Sync Project with Gradle ”按钮正在做什么。它不等于从命令行执行构建。直到我实际点击Android Studio中的运行按钮才执行compile-android任务。点击运行按钮就等同于命令行。