繁体   English   中英

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

[英]How to execute an Ant target task in 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包括它,以便我可以指定需要为每个buildType编译哪个ant目标。 在我的所有谷歌搜索中,我所能找到的参考就是在命令行中对其进行编译。

更新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

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

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

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

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

好的,问题似乎是我对“ 使用Gradle同步项目 ”按钮在做什么方面的误解。 这不等同于从命令行执行构建。 直到我真正按下Android Studio中的运行按钮,它才执行compile-android任务。 按下运行按钮相当于命令行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM