每个项目模块的 Gradle 可重用自定义任务

标签 gradle build.gradle

如何定义可重用模块的自定义任务?就我而言,我想使用 Exec使用 commandLine 运行脚本的任务特定于子项目的参数。

例如:

脚本

#!/usr/bin/env sh
echo "$@"

build.gradle
task customExecTask(type: Exec) {
  if (project.name == "a") {
    commandLine './script', "Project 'a'"
  } else if (project.name == "b") {
    commandLine './script', "Project 'b'"
  }
}

project('a') {
  build.dependsOn ':customExecTask'
}

project('b') {
  build.dependsOn ':customExecTask'
}

编辑

或者是这样的:
task customExecTask(type: Exec) {
  def dynamicVariable = ""
  commandLine './script', dynamicVariable
}

project('a') {
  task(':customExecTask').dynamicVariable = "Project 'a'"
  build.dependsOn ':customExecTask'
}

project('b') {
  task(':customExecTask').dynamicVariable = "Project 'b'"
  build.dependsOn ':customExecTask'
}

预期结果:
$ gradle :a:build
Project 'a'

$ gradle :b:build
Project 'b'

最佳答案

请引用 Using Gradle Plugins 上的文档.

据此topic ,您可以将任务放在单独的 gradle 文件中 mytask.gradle并在您添加到 build.gradle 的每个模块中:
apply from: "${rootDir}/pathtomycustomgradlefile/mytask.gradle"
如果您需要更多逻辑来决定应用哪一个,您可以查看主题 Applying plugins to subprojects .

关于每个项目模块的 Gradle 可重用自定义任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56538911/

相关文章:

android - Nativescript gradle 项目级

java - 使用 gradle 构建 netflix nicobar 时出错

android - Gradle 总是从最后一个 flavor 中的 buildType 中获取值

gradle - Spring Data Neo4j OGM Gradle依赖关系问题

android - React-Native 0.56 如何使用 fresco 启用 Android gif 支持?

android - 更新 Firebase Crashlytics SDK 时出现问题

gradle - 有没有办法在Gradle中复制Maven attachClasses war插件功能?

git - gradle找不到git.exe

android - 无法解决实现 'com.github.glomadrian:MaterialAnimatedSwitch:1.1@aar'

android - Android Studio 2.3 中的 Gradle 缩进问题