我们有几个独立的构建(每个独立的构建都是多项目构建)。主要的构建脚本变得很大,因为我们拥有一组由子标记重复使用的常见任务,并且内置构建之间有很多重复。我们正在寻找的是:

  1. 一种将主构建文件分为较小文件的方法
  2. 一种在其他独立版本中重复使用某些部分的方法

在Gradle中实现这一目标的最佳方法是什么?

有帮助吗?

解决方案

Gradle 0.9允许您从另一个构建脚本导入构建脚本。看一下: 使用外部构建脚本配置项目. 。基本上是 apply from: 'other.gradle'.

用户指南没有提到的一件事是,“来自”参数可以是URL,因此您可以通过HTTP在某个地方(例如您的颠覆存储库)提供共享脚本,并从多个构建中导入它们。

其他提示

我发现的解决方案意味着映射您在您的中的东西 other.gradle 文件。

def getVersionName = { ->
    def stdout = new ByteArrayOutputStream()
    exec {
        commandLine 'git', 'describe', '--tags'
        standardOutput = stdout
    }
    return stdout.toString().trim()
}
ext{
    VERConsts = [:]
    VERConsts['NAME'] = getVersionName()
    VERConsts['NAME_CALL'] = getVersionName
}

然后,在你的 build.gradle 文件:

apply from: 'other.gradle'
// ...
android {
    defaultConfig {
        versionName VERConsts['NAME_CALL']()
        // or
        versionName VERConsts['NAME']
    }
}

然后, versionName 将有呼叫结果。

笔记:

  • VERConsts['NAME'] = getVersionName() 将会通知 getVersionName() 并存储其结果。在脚本中使用它 versionName VERConsts['NAME'] 然后分配存储的值。
  • VERConsts['NAME_CALL'] 相反,将存储对该功能的引用。使用 VERConsts['NAME_CALL']() 在您的脚本中,实际上会调用该功能并将结果分配给您的变量

前者将导致在脚本上分配相同的值,而后者可能会导致不同的值(例如,如果您的脚本运行时有人按下另一个版本)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top