【问题标题】:Execute android build tasks in custom tasks在自定义任务中执行android build任务
【发布时间】:2016-01-06 16:40:39
【问题描述】:

我想删除项目 makefile 并编写一些不错的 gradle 任务。 我需要按以下顺序执行以下任务:

  1. 干净
  2. 增量版本
  3. 构建
  4. 上传

#1、#3 和 #4 是来自 android 和插件 (bintray) 的任务,而 #2 是自定义任务。这是我目前所拥有的:

task releaseMajor {
    doLast {
        clean.execute()
        build.execute()
        incrementVersion.execute()
        bintrayUpload.execute()
    }
}

运行顺序没有我认为cleanbuild 之后运行的那么好。 binrayUpload 运行时没有味道 (release)。我也尝试过使用dependsOn,但没有成功(订单不起作用)。

我在 Gradle 文档中找不到如何正确执行此操作。当从 CLI 以正确的顺序执行时,一切正常。

【问题讨论】:

  • 你是如何使用dependsOn的?

标签: android gradle android-gradle-plugin build.gradle


【解决方案1】:

使用mustRunAfterfinalizedBy 进行更精细的订单控制:

task releaseMajor (dependsOn: ['clean', 'build', 'incrementVersion', 'bintrayUpload'])
build.mustRunAfter clean
incrementVersion.mustRunAfter build
bintrayUpload.mustRunAfter incrementVersion

【讨论】:

  • 这样做不会运行,例如每次清理后构建?
  • 没有。有关详细信息,请参阅第 17.5 节 here
  • 谢谢,效果很好。因此,如果我是对的,dependsOn 是将在releaseMajor 中运行的任务,但在之后指定之前不会尊重该顺序。根据文档,在日常执行中,build 不会在clean 之后运行。我已经阅读了两次文档,但对我来说不是很清楚。
  • 我在使用这个时遇到了一些问题:我有 releaseMajorreleaseMinorreleaseMinor 与主要加递增版本相同。脚本运行正确(增量在一切之前完成),但发布的 aar 是在增量之前的旧版本。结果在这里gist.github.com/HugoGresse/29bea87c097698d10a4f
  • mustRunAfter 行与任务定义无关,您不必重复执行相同的规则。 gist.github.com/foragerr/ea7e7a3d4f63607bb70b
【解决方案2】:

试过了

task clean {
    println 'clean task executing'
}
task incrementVersion (dependsOn:"clean"){
    println 'incrementVersion task executing'
}
task building (dependsOn:"incrementVersion"){
    println 'build task executing'
}
task bintrayUpload (dependsOn:"building") {
    println 'bintrayUpload task executing'
}

输出是

clean task executing
incrementVersion task executing
build task executing
bintrayUpload task executing

并执行./gradlew bintryUpload

【讨论】:

  • 我正在使用来自 android 的已完成任务,名为 cleanbuild。我可以重新定义它。
  • 链接dependsOn 在这种情况下不是一个好的解决方案,因为如果不先触发链上的任务,您将无法再运行每个单独的任务。 OP 任务通常是独立的任务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
  • 2015-08-19
  • 1970-01-01
  • 2019-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多